使用构造函数将元素插入std :: set

cpx*_*cpx 4 c++ stl

是否可以像std :: list一样向std :: set插入一个新元素,例如:

//将一个名为"string"的元素插入到mylist的子列表中

std::list< std::list<string> > mylist;
mylist.push_back(std::list<string>(1, "string"));
Run Code Online (Sandbox Code Playgroud)

现在,mylist在其std :: list类型的子列表中有一个std :: string类型的元素.

如果std :: set是std :: list my list的子集,你怎么能这样做呢

std::list<std::set <string>> mylist;
Run Code Online (Sandbox Code Playgroud)

如果你不能那么为什么不呢?

Joh*_*ing 6

我认为这应该可以解决问题:

int main()
{
    string s = "test";
    set<string> mySet(&s, &s+1);

    cout << mySet.size() << " " << *mySet.begin();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为了澄清&s作为数组处理的合法性和有效性,请参阅此讨论:string s; &S + 1; 法律?UB?

  • @Kristo:John Dibling发布了一个问题,以澄清它是否是未定义的行为.底线 - 为了指针算术的目的,可以将单个对象视为一个元素的数组:http://stackoverflow.com/questions/2405555/string-s-s1-legal-ub (2认同)