vector的[]操作符号使用疑问?
我定义了一个结构体,如下:
typedef struct{
int recNo ;
int category ;
}DataElement;
然后在主程序中定义了一个vector,程序如下:
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
vector <DataElement> tmp;
vector <DataElement> ::iterator v1_Iter;
DataElement dlt;
for(int i=0;i <5;i++)
{
dlt.category = i;
dlt.recNo = i+100;
tmp.push_back(dlt);
}
cout < < "测试能不能这么用 " < <endl;
DataElement &j = tmp.back();
cout < <j.category < <endl;
cout < <j.recNo < <endl;
cout < < "改变大小的测试值 " < <++((tmp.back())).category < <endl;
for( i=0; i <5; i++ )
{
cout < < "测试第 " < <i < < "条数据 " < <endl;
cout < <tmp[i].category < <endl;
cout < <tmp[i].recNo < <endl;
}
tmp.clear();
int n= tmp.size();
cout < < "容器大小是: " < <n < <endl;
}
可使用tmp[i].recNo ,系统提示“ left of '.category ' must have class/struct/union”,查msdn,说[]符号是返回的引用,但是对于结构体为何不行呢? 但是用tmp.back().category就可以, tmp.back()返回的也是引用阿? 难道这两个引用有什么不同吗? []操作符是可以操作整数的,请问下这是为何?
[解决办法]
for( i=0; i <5; i++ )
改为
for( int i=0; i <5; i++ )
试试看
[解决办法]
int i写在for语句内的看看