【问题标题】:Can we make array of sets in c++? [closed]我们可以在 C++ 中制作集合数组吗? [关闭]
【发布时间】:2018-04-02 00:40:41
【问题描述】:

像下面这样:

set<int> s[3];

我已经尝试过了,但它在我试图通过写入s[i][j] 来访问其元素的行中出现错误,错误显示为

'operator[ ]' 不匹配

【问题讨论】:

  • 为什么不std::vector&lt;std::set&lt;int&gt;&gt;
  • std::set 没有operator[]...
  • operator[] 没有 std::set
  • 当然可以,但正如前面所说,set 没有operator[]ideone.com/WZj40n

标签: c++ c++11 stl


【解决方案1】:

问题不在于std::set-s 的数组,而在于您尝试访问集合内元素的方式。

std::set 不支持operator [],这就是您收到错误的原因:

'operator[ ]' 不匹配

改为使用find() 以下列方式访问对象:

auto iter = s[i].find(<value>);
if (iter != s[i].end()) {
    [..] // Do something with iter
}

【讨论】:

    【解决方案2】:

    集合的元素不通过索引访问。 s[i] 是第 (i-1) 个集合,但 s[i][j] 没有任何意义。您可以使用 find 函数检查集合中是否存在元素。例如 s[i].find(3)!=s[i].end() 。您可以使用 for(int x : s[i]){}(C++11 及更高版本)或使用迭代器按排序顺序遍历元素。

    【讨论】:

      猜你喜欢
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      相关资源
      最近更新 更多