我的简单代码是这样的:
#include<iostream>
#include<set>
using namespace std;
void main() {
set<string,string> myset;
myset.insert(pair<string,string>("abc","def"));
cout<<myset.size()<<endl;
}
即。我想把对作为集合元素。但是这段代码会产生错误。在地图容器中,我也很难将不同的对作为元素插入。但是在("abc","def")
和("abc","ghe")
的情况下,对于相同的键值,即“abc”,即使对对于对的第二元素不同,第二对也不能被带入容器中。
如何更改我的代码以完成工作?
答案 0 :(得分:0)
std::set
声明为:
template <class Key, class Compare = less<Key>,
class Allocator = allocator<Key> >
class set;
该集包含Key
类型的元素,使用第二个模板参数进行排序。因此,您无法定义std::set< std::string, std::string >
来保存字符串对。
std::map
可用于存储std::string
对,但密钥是唯一的。因此,您将无法使用相同的密钥(对的第一个元素)存储多个对。
如果你想存储对,你可以直接这样做,方法是这样定义容器:
std::set< std::pair<std::string, std::string> > mySet;