Bonjour à tous,
Je voulais savoir s'il existait une fonctionnalité dans boost ou si vous aviez une idée sur comment faire pour avoir une "vue union" sur plusieurs conteneurs.
Un exemple de ce que je voudrai réaliser:
make_union_view ne ferait pas de copie, ce serait une structure permettant d'itérer en lazy sur les conteneurs qui lui sont passés. Dans un premier temps, j'aimerai juste pouvoir le faire sur des conteneurs de même type, mais à terme ce qui serait bien c'est de pouvoir avoir un code comme celui-ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int main() { std::vector<int> v1 = {1, 2, 3}; std::vector<int> v2 = {4, 5, 6}; for(int& i, make_union_view(v1, v2)) std::cout << i << " "; //affiche 1, 2, 3, 4, 5, 6 std::cout << std::endl; return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int main() { std::vector<int> v1 = {1, 2, 3}; std::list<int> v2 = {4, 5, 6}; std::set<int> v3 = {7, 8, 9}; std::map<int, int> v4 = {{1, 10}, {2, 11}, {3, 12}}; for(int& i, make_union_view(v1, v2, v3, v4 | boost::adaptors::map_values)) std::cout << i << " "; //affiche 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 std::cout << std::endl; return 0; }
Partager