-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?如果不是,那你为什么要把它做成二维数据结构呢?难道你不能:

positions[word] = pos;

positions类型在哪里std::map<std::string, int>

编辑:正如Mike所指出的,不再使用指针。

于 2012-08-07T09:31:30.187 回答