0

我的简单代码是这样的:

#include<iostream>
#include<set>

using namespace std;

void main() {
     set<string,string> myset;
     myset.insert(pair<string,string>("abc","def"));
     cout<<myset.size()<<endl;
}

即我想把对作为集合元素。但是这段代码会产生错误。在地图容器中,我也面临插入不同对作为元素的困难。但是在 and 的情况下("abc","def")("abc","ghe")对于相同的键值,即“abc”,即使对中的第二个元素不同,第二对也不能被放入容器中。

如何更改我的代码以完成工作?

4

1 回答 1

0

std::set声明为:

template <class Key, class Compare = less<Key>,
          class Allocator = allocator<Key> >
    class set;

该集合包含 type 的元素Key,使用第二个模板参数进行排序。所以你不能定义 astd::set< std::string, std::string >来保存成对的字符串。

std::map可以用来存储std::strings对,但是key是唯一的。因此,您将无法使用相同的键(该对的第一个元素)存储多个对。

如果你想存储对,你可以直接这样做,通过像这样定义容器:

std::set< std::pair<std::string, std::string> > mySet;
于 2013-09-06T11:32:11.227 回答