无法在一组集中插入元素

时间:2017-07-11 15:58:56

标签: c++ stdset

我有一个带有一些属性和一组的结构。我在另一组中有多个这些结构的实例。当我尝试向结构中的集合添加内容时:

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);

}

0 个答案:

没有答案