方括号在"map <string, int> instance[numberFeatures];"中是什么意思
What does the square bracket mean in "map <string, int> instance[numberFeatures];"
初始化地图时[数字特征]是什么意思?我在任何地方都找不到答案?在代码的后面,它使用 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]
是变量的声明。它声明了一个类型Type
的N
对象的数组。数组变量(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
分配给第二个下标运算符的结果。