#include <iostream>
#include <vector>
#include <memory>
#include <bitset>
#include <iterator>
int main() {
std::vector<std::vector<int>> vec2d {
{ 1, 4, 8, 9 },
{ 4, 7, 4, 3 },
{ 4, 1, 1, 3 }
};
int const vsize = 12;
auto exist = std::make_unique<std::bitset<vsize + 1>>();
std::vector<int> vec;
for (auto const& v1d : vec2d) {
for (auto const val : v1d) {
if (!exist->test(val)) {
vec.emplace_back(val);
exist->set(val, true);
}
}
}
std::copy(vec.cbegin(), vec.cend(), std::ostream_iterator<int>(std::cout, "\n"));
}
/*
run:
1
4
8
9
7
3
*/