Изучаю методы set. Хочу вывести каждый для примера. Где ошибка?
Код:
#include <iostream>
#include <set>
#include <algorithm>
#include <vector>
using namespace std;
void example_vector ()
{
vector<int> v1 = { 0, 1, 2, 3, 4, 5 };
vector<int> v2 = { 4, 5, 6, 7 ,8 ,9 };
vector<int> v3, v4, v5, v6;
set_union (v1.begin (), v1.end (), v2.begin (), v2.end (), back_inserter (v3));
set_intersection (v1.begin (), v1.end (), v2.begin (), v2.end (), back_inserter (v4));
set_difference (v1.begin (), v1.end (), v2.begin (), v2.end (), back_inserter (v5));
set_symmetric_difference (v1.begin (), v1.end (), v2.begin (), v2.end (), back_inserter (v6));
cout << "set_union: "; cout << v3;
cout << "set_intersection: "; cout << v4;
cout << "set_difference: "; cout << v5;
cout << "set_symmetric_difference: "; cout << v6;
cout << endl;
}
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
void show(const char* msg, const vector<int>& box) {
cout << msg;
for (auto& x : box) cout << ' ' << x;
puts("");
}
void example_vector() {
vector<int> v1 = { 0, 1, 2, 3, 4, 5 };
vector<int> v2 = { 4, 5, 6, 7, 8, 9 };
vector<int> v3, v4, v5, v6;
set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(v3));
set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(v4));
set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(v5));
set_symmetric_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(v6));
show("set_union:", v3);
show("set_intersection:", v4);
show("set_difference:", v5);
show("set_symmetric_difference:", v6);
}
int main() {
example_vector();
cin.get();
} оператор << для cout не имеет встроенной перегрузки для вывода векторов. Вы можете написать ее сами.
#include <iostream>
#include <vector>
std::ostream& operator << (std::ostream& inp, std::vector<int>& vec)
{
for (auto& i : vec) inp << i << " ";
return inp;
}
//или для векторов любого типа через шаблон
// template<typename T>
//std::ostream& operator << (std::ostream& inp, std::vector<T>& vec)
//{
// for (auto& i : vec) inp << i << " ";
// return inp;
//}
int main()
{
std::vector<int> a{ 1,2,3,4,5,6,7 };
std::cout << a;
}