c++ - 迭代数组c ++中的集合
问题描述
#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;
}
任何人都可以帮我解释如何通过数组内部的这个集合进行迭代。我相信一种简单的方法是将其转换为设置在向量中。
解决方案
数组的大小也需要传递给函数,以便您能够遍历所有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;
}
}
}
推荐阅读
- python - Python Pandas 使用各种数据类型进行切片
- asp.net-core - .NET Core SignalR 3.0 异常
- macos-catalina - 创建配置文件 MacOS?
- python - 有没有一种方法可以在 *Python* 中获得 API 响应时间的细分,类似于我们可以从 Postman 获得的?
- ag-grid - 为什么 ag-theme-balham 是唯一有效的 ag-grid 主题?
- php - CentOS 8 上的 PHP-FPM - 不同的用户
- apache-spark - 如何使用 oozie 在工作火花中传递日期参数
- sql - 如何在 SQL WHERE 条件下制作没有 ELSE 的 IF?
- regex - JAVAMETHOD grok 模式,末尾带有可选的线程号
- javascript - 使用来自后端的公钥(PHP 钠)在前端(sodium-plus.js)上加密