我有一个带有一些属性和一组的结构。我在另一组中有多个这些结构的实例。当我尝试向结构中的集合添加内容时:
test2.cpp: In function ‘int main()’:
test2.cpp:42:22: error: no matching function for call to ‘std::set<int>::insert(int) const’
(it->ys).insert(2);
我承认它可能与集合的初始化有关。我有一个C背景,并没有完全掌握对象初始化和声明如何在C ++中工作。 代码:
#include <stdlib.h>
#include <set>
#include <utility>
using namespace std;
struct MyStruct {
long int x;
set<int> ys;
friend bool operator<(MyStruct a, MyStruct b) {
return a.x < b.x;
}
};
set<MyStruct> ms;
MyStruct *new_ms(long int x) {
MyStruct *n= (MyStruct*) malloc(sizeof(MyStruct));
n->x = x;
n->ys = set<int>();
return n;
}
int main() {
pair<set<MyStruct>::iterator,bool> ret;
set<MyStruct>::iterator it;
MyStruct *ms1 = new_ms((long int)5);
ret = ms.insert(*ms1);
if(ret.second == false) {
free(ms1);
}
it = ret.first;
(it->ys).insert(2);
}