Top.Mail.Ru
Ответы

Изучаю методы 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;
}

По дате
По рейтингу
Аватар пользователя
Новичок
1234567891011121314151617181920212223242526272829
 #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 не имеет встроенной перегрузки для вывода векторов. Вы можете написать ее сами.

12345678910111213141516171819202122
 #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; 
}