C++11 C++; 如何在C++中创建一组集合? set<char> inner1; set<char> inner2; set< set<char> > outer; set< set<char> >:: iterator new_it; set<char>::iterator it; for (int i = 65; i < 70; ++i) inner1.insert(i); for (int i = 70; i < 80; ++i) inner2.insert(i); outer.insert(inner1); outer.insert(inner2); for(new_it=outer.begin();new_it!=outer.end();new_it++) { for(it=*(new_it);it!=(new_it);) { } } set inner1; 第2组; 集合外部; set:迭代器new\u it; set::迭代器; 对于(int i=65;i端();(++it)< /代码>。并且,当您将该集合插入另一个时,考虑使用 STD::移动< /代码>。您当前的实现有点困难inefficient@PiotrS.字体你比我快。如果你回答,我会删除我的。@Beta没问题,我不打算发布答案。你能解释一下你的解决方案吗?我不明白。@SachinSingh:我的解决方案是在容器上进行一次普通的迭代。在什么方面是不清楚的?实际上,我正在尝试创建一组集合,但是在声明时会出现各种错误。我正在做这样的事情,对吗?我不知道如何使用你的答案来解决我面临的问题错误:调用“std::set::insert(int&)”时没有匹配的函数。@SachinSingh:您的声明看起来是正确的(尽管较旧的编译器更喜欢“>>”而不是“>>”)。我不认为我的答案能解决你的问题,但是如果你把你的代码减少到一个最小的完整示例(产生错误的最短程序),你可以发布一个关于它的问题。

C++11 C++; 如何在C++中创建一组集合? set<char> inner1; set<char> inner2; set< set<char> > outer; set< set<char> >:: iterator new_it; set<char>::iterator it; for (int i = 65; i < 70; ++i) inner1.insert(i); for (int i = 70; i < 80; ++i) inner2.insert(i); outer.insert(inner1); outer.insert(inner2); for(new_it=outer.begin();new_it!=outer.end();new_it++) { for(it=*(new_it);it!=(new_it);) { } } set inner1; 第2组; 集合外部; set:迭代器new\u it; set::迭代器; 对于(int i=65;i端();(++it)< /代码>。并且,当您将该集合插入另一个时,考虑使用 STD::移动< /代码>。您当前的实现有点困难inefficient@PiotrS.字体你比我快。如果你回答,我会删除我的。@Beta没问题,我不打算发布答案。你能解释一下你的解决方案吗?我不明白。@SachinSingh:我的解决方案是在容器上进行一次普通的迭代。在什么方面是不清楚的?实际上,我正在尝试创建一组集合,但是在声明时会出现各种错误。我正在做这样的事情,对吗?我不知道如何使用你的答案来解决我面临的问题错误:调用“std::set::insert(int&)”时没有匹配的函数。@SachinSingh:您的声明看起来是正确的(尽管较旧的编译器更喜欢“>>”而不是“>>”)。我不认为我的答案能解决你的问题,但是如果你把你的代码减少到一个最小的完整示例(产生错误的最短程序),你可以发布一个关于它的问题。,c++11,set,C++11,Set,您不能在内部循环中将new\u it分配给it。这样做: for(it = new_it->begin(); it!=new_it->end(); ++it) 问题是在您的循环中,它应该是(it = NexJit ->开始);it=NexSIT->端();(++it)< /代码>。并且,当您将该集合插入另一个时,考虑使用 STD::移动< /代码>。您当前的实现有点困难inefficient@PiotrS.字体你比我快。如果你回答,我会删除我的。@Beta没问题,我不打算发布答案。

您不能在内部循环中将
new\u it
分配给
it
。这样做:

for(it = new_it->begin(); it!=new_it->end(); ++it)

问题是在您的循环中,它应该是<代码>(it = NexJit ->开始);it=NexSIT->端();(++it)< /代码>。并且,当您将该集合插入另一个时,考虑使用<代码> STD::移动< /代码>。您当前的实现有点困难inefficient@PiotrS.字体你比我快。如果你回答,我会删除我的。@Beta没问题,我不打算发布答案。你能解释一下你的解决方案吗?我不明白。@SachinSingh:我的解决方案是在容器上进行一次普通的迭代。在什么方面是不清楚的?实际上,我正在尝试创建一组集合,但是在声明时会出现各种错误。我正在做这样的事情,对吗?我不知道如何使用你的答案来解决我面临的问题<代码>错误:调用“std::set::insert(int&)”时没有匹配的函数。@SachinSingh:您的声明看起来是正确的(尽管较旧的编译器更喜欢“>>”而不是“>>”)。我不认为我的答案能解决你的问题,但是如果你把你的代码减少到一个最小的完整示例(产生错误的最短程序),你可以发布一个关于它的问题。