方括号在"map <string, int> instance[numberFeatures];"中是什么意思

What does the square bracket mean in "map <string, int> instance[numberFeatures];"

本文关键字:numberFeatures 意思 instance 是什么 map lt string int 方括号 gt      更新时间:2023-10-16

初始化地图时[数字特征]是什么意思?我在任何地方都找不到答案?在代码的后面,它使用 instance[i][temp] = j,其中 i,j 是整数,temp 是一个字符串。这也是什么意思?

我已经在互联网上查找了所有地图教程,但似乎没有一个包含 [] 符号

int numberFeatures; //number of features in the dataset
string data;
bool consistent;
cin >> numberFeatures; //input the number of features
vector <int> numberAttributes(numberFeatures); //number of attributes 
for each feature.
map <string, int> instance[numberFeatures+1];
for(int i=0; i<numberFeatures; i++)
{
cin >> numberAttributes[i];
for(int j=1; j<=numberAttributes[i]; j++)
{
string temp;
cin>> temp;
instance[i][temp] = j; //map attribute name with number
}
}
instance[numberFeatures]["no"] = 0;
instance[numberFeatures]["yes"] = 1;

"map <string, int> instance[numberFeatures];"中的方括号是什么意思

Type name[N]是变量的声明。它声明了一个类型TypeN对象的数组。数组变量(N(的大小必须是C++的编译时常量,否则程序格式不正确。name是变量的名称。

map <string, int>是一种类型。map <string, int> instance[numberFeatures];map <string, int>类型的numberFeatures对象的数组的声明。变量的名称为instance。但是,在示例中,numberFeatures+1不是编译时常量值,因此示例程序的格式不正确。

在代码的后面,它使用 instance[i][temp] = j,其中 i,j 是整数,temp 是一个字符串。这也是什么意思?

首先,在数组上应用下标运算符。结果是对数组的第i个(从零开始(元素的引用。 然后在生成的元素上应用下标运算符。由于该元素的类型为map <string, int>,这将调用map模板的重载下标运算符。最后,j分配给第二个下标运算符的结果。