首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vector的[]操作符号使用疑问?解决思路

2012-02-21 
vector的[]操作符号使用疑问?我定义了一个结构体,如下:typedefstruct{intrecNointcategory}DataElement

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语句内的看看

热点排行