【问题标题】:iterator a set in array c++迭代数组c ++中的集合
【发布时间】:2019-06-10 04:55:58
【问题描述】:
#include <iostream>
#include <unordered_set>
using namespace std;
void arraySet(unordered_set<int> n[]){
for(auto it1 = n->begin(); it1!= n->end(); it1++){
cout << "n[" <<*it1<<"]: ";
// for(auto it = it1->begin(); it!= it1->end(); it++){
// cout << *it <<" ";
// }
cout << endl;
}
}
int main()
{
unordered_set<int> n[3];
n[0].insert(734);
n[0].insert(23);
n[0].insert(634);
n[1].insert(2);
n[1].insert(1);
n[2].insert(1);
arraySet(n);
return 0;
}
谁能帮我解释一下如何遍历数组中的这个集合。我相信一种简单的方法是将其转换为矢量内的集合。
【问题讨论】:
标签:
c++
arrays
iterator
unordered-set
【解决方案1】:
数组的大小也需要传递给函数,以便您能够遍历数组的所有sets。仅传递指针,无法确定大小,取消引用 n->begin 将仅遍历第一个集合。
void arraySet(unordered_set<int> n[], int size) {
for (auto i = 0; i < size; i++) {
for (auto it1 = n[i].begin(); it1 != n[i].end(); it1++) {
cout << "n[" << *it1 << "]: ";
// for(auto it = it1->begin(); it!= it1->end(); it++){
// cout << *it <<" ";
// }
cout << endl;
}
}
}
int main()
{
unordered_set<int> n[3];
n[0].insert(734);
n[0].insert(23);
n[0].insert(634);
n[1].insert(2);
n[1].insert(1);
n[2].insert(1);
arraySet(n,3);
return 0;
}
或者您可以使用std::vector 来包含集合并传递它。
std::vector<unordered_set<int>> n(3); // Sets the size to 3 elements
函数定义将更改为
void arraySet(std::vector<unordered_set<int>>& n) {
for (size_t i = 0; i < n.size(); i++) {
for (auto it1 = n[i].begin(); it1 != n[i].end(); it1++) {
cout << "n[" << *it1 << "]: ";
// for(auto it = it1->begin(); it!= it1->end(); it++){
// cout << *it <<" ";
// }
cout << endl;
}
}
}