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

つまり、セット要素としてペアを取りたいです。しかし、このコードはエラーを生成します。マップ コンテナーでも、個別のペアを要素として挿入するのが困難です。ただし、("abc","def")andの場合("abc","ghe")、同じキー値、つまり「abc」の場合、ペアがペアの 2 番目の要素に対して異なる場合でも、2 番目のペアをコンテナーに取り込むことはできません。

仕事を終わらせるためにコードを変更するにはどうすればよいですか?

4

1 に答える 1

0

std::set次のように宣言されています。

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

Keyセットには、2 番目のテンプレート パラメーターを使用して並べ替えられたtype の要素が含まれます。std::set< std::string, std::string >したがって、文字列のペアを保持するために a を定義することはできません。

std::mapのペアを格納するために使用できますstd::stringが、キーは一意です。したがって、同じキー (ペアの最初の要素) を持つ複数のペアを格納することはできません。

ペアを保存したい場合は、次のようにコンテナを定義することで直接行うことができます。

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