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)
有没有人有任何想法?谢谢!
问题是你的集合是一对整数的集合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)