喜欢以下方式:
set<int> s[3];
我已经尝试过,但是在我试图通过编写s[i][j]
来查找错误的行
不匹配'operator []'
答案 0 :(得分:3)
问题不在于std::set
- s的数组,而在于您尝试访问集合中元素的方式。
std::set
不支持operator []
,这就是您收到错误的原因:
不匹配&#39;运营商[]&#39;
而是使用find()
以下列方式访问对象:
auto iter = s[i].find(<value>);
if (iter != s[i].end()) {
[..] // Do something with iter
}
答案 1 :(得分:0)
索引不会访问集合的元素。 s [i]是(i-1)&#39;但s [i] [j]并不代表任何东西。您可以使用find函数检查集合中是否存在元素。例如s [i] .find(3)!= s [i] .end()。您可以使用for(int x:s [i]){}(C ++ 11及更高版本)或使用迭代器以排序顺序遍历元素。