-2

3つ以上の要素を持つstd::mapから特定の要素にアクセスしようとしています。次に例を示します。

std::map <int, CString, CString, CString> map;

//Initialise

map[0] = _T("stuff1"), _T("stuff2"), _T("stuff3");

//now if I just want to access stuff3 is it this:

CString str = map[0][2];

//or something more like this?

CString str = map[0]. ???

どんな助けでも大いに感謝します。

編集:申し訳ありませんが、初めてマップを使用したときに、より多くの要素が含まれているstd::mapの情報が見つからなかったのはなぜだろうと思っていました。

4

3 に答える 3

5

これをコンパイルしようとしましたか?すべきではありません。各要素に対して正確に1つのキーと1つの値を持つマップのみを作成できます。

ただし、値は複合する可能性があるため、次のように記述できます。

struct ValueType {
 CString v1;
 CString v2;
 CString v3;
}
std::map <int, ValueType> map;

のような要素にアクセスしますmap[somekey].v3;

このようなマップに値を挿入するには、次のように記述する必要があります。

ValueType strings = {"1","2","3"};
map.insert(999, strings);

void addToMap(std::map <int, ValueType> &map, CSting const& v1, CString const& v2, CString const& v3)または、より便利な方法でマップを埋めるヘルパー関数(つまり)を作成することもできます。

于 2012-08-24T10:27:49.863 に答える
3

std::map <int, CString, CString, CString> map;違法です。

std::multimapまたはを使用しstd::map<int,std::vector<CString> >ます。

于 2012-08-24T10:27:55.490 に答える
1

私はあなたが探しているものをこれを信じています

std::map <int, std::list<CString> > myMap;

次にmyMap[0]、にアクセスし、返されたの各要素にアクセスしますstd::list<CString>

于 2012-08-24T10:27:48.583 に答える