在集合 C++ 中找到一对

Saf*_*rim 6 c++ iterator set find

如果我有一个包含整数对的集合,

set<pair<int,int> > cells;
Run Code Online (Sandbox Code Playgroud)

如何使用“查找”查找集合中是否存在一对。我可以使用“查找”来设置一个值,但不能为一对设置。

我正在尝试,

 cells.insert(make_pair(1,1));
 set<int,int>::iterator it;
 it=cells.find(pair<int,int>(1,1));

error: no match for 'operator=' in 'it = cells.std::set<_Key, _Compare, _Alloc>::find<std::pair<int, int>, std::less<std::pair<int, int> >, std::allocator<std::pair<int, int> > >((*(const key_type*)(& std::pair<int, int>((* &1), (* &1)))))'|
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法?谢谢!

Zaf*_*afi 3

问题是你的集合是一对整数的集合std::pair<int,int>,而不仅仅是<int,int>。改变它可以修复你的代码。如果您使用的是 c++11 或更高版本,则只需使用 auto 关键字即可。

// Example program
#include <iostream>
#include <string>
#include <utility>
#include <set>

int main()
{
    std::pair<int,int> p1(1,0);
    std::pair<int,int> p2(2,1);
    std::set<std::pair<int,int>> s;
    s.insert(p1);
    s.insert(p2);
    auto it = s.find(p1);
    std::cout << it->first << "," << it->second <<std::endl;
}
Run Code Online (Sandbox Code Playgroud)