-2

配列を割り当てました

char words[100][100];

ここで、単語とその位置を行に保存したいと思います。行に「こんにちは私はプログラマーです」があるとします。今、私は保存したい

string word;

while(line){
//called a function to get the word and position.
words[word]["pos"] = pos;
}

を分割wordsして文字列wordに保存しましたが、保存しようとするとエラーが発生します。

"No viable overloaded operator[] for type 'char[100][100]"

私は何を間違っていますか?

4

3 に答える 3

2

arrayとして使用しようとしていmapます。文字列を配列インデックスとして使用することはできません。必要な構造はstd::map<std::string, std::map<std::string, int> >

std::map<std::string, std::map<std::string, int> > m;
m["foo"]["bar"] = 10;
于 2012-08-07T09:30:01.703 に答える
0

char[100][100]は単一文字の多次元配列であり、固定長の文字列を格納するために使用できます。文字列ではなく、整数変数を使用してインデックスを付けることができます。

使いたいと思われますstd::map<std::string, std::map<std::string, int> >

于 2012-08-07T09:31:08.110 に答える
0

C++配列のインデックスとして文字列を使用することはできません。必要なのは地図です:

std::map< std::string, std::map<string, int> > words;

次に、次のことを行う必要があります。

words[word]["pos"] = pos;

しかし、他にどのようなデータを保存しますposか?そうでない場合、なぜそれを2次元データ構造にしたいのですか?あなたはただできません:

positions[word] = pos;

positionsタイプはどこですかstd::map<std::string, int>

編集:マイクが指摘したように、もはやポインタを使用していません。

于 2012-08-07T09:31:30.187 に答える