请问有关C++标准库里的vector类,有关begin()和end()

cccloveyf 2003-08-21 09:59:38
假设有如下定义:
int a[5]={1,2,3,4,5};
vector<int> b(a,a+5);
那么b.begin()返回值的类型是int还是int*(是地址还是元素的值)?

我编写了下面一段代码:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a[5]={1,2,3,4,5};
vector<int> b(a,a+5);
for(vector<int>::iterator index=b.begin(); index!=b.en();index++)
cout<<b[*index]<<endl;
cout<<"b.size():"<<b.size()<<endl;

return 0;
}
为什么输出的结果是:
2
3
4
5
-33686019
b.size():5
...全文
35 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzyok 2003-08-21
  • 打赏
  • 举报
回复
b.begin()返回的是iterator 指针了
你不是这样定义的吗?vector<int>::iterator index=b.begin();
而且你输出的b[*index]正好是取a[1]-a[5]的值,而a[5]越界,所以取出的会是该段内存地址的随机内容
cccloveyf 2003-08-21
  • 打赏
  • 举报
回复
谢谢各位,结贴!
WhatCanIdoing 2003-08-21
  • 打赏
  • 举报
回复
vcforever(霓裳羽衣) 讲的是正确的

*index 就是你的vector中的内容!
不需要 b[*index] 只有

如果 a[5]={10,20,30,40,50};

那么 输出的就是
b[10]
b[20]
b[30]
b[40]
b[50]
的值
vcforever 2003-08-21
  • 打赏
  • 举报
回复
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a[5]={1,2,3,4,5};
vector<int> b(a-1,a+4);
for(vector<int>::iterator index=b.begin(); index!=b.end();index++)
cout<<*index<<endl;
cout<<"b.size():"<<b.size()<<endl;

return 0;
}
*index就是你的vector中的内容!
ShiChao 2003-08-21
  • 打赏
  • 举报
回复
C的数组是从0开始的
zhang,qiuping 2003-08-21
  • 打赏
  • 举报
回复
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a[5]={1,2,3,4,5};
vector<int> b(a,a+5);
for(vector<int>::iterator index=b.begin(); index!=b.end();index++)
cout<<b[*index-1]<<endl;//同意 zzyok() 的,只要这样改就可以了。
cout<<"b.size():"<<b.size()<<endl;

return 0;
}
EmailTan 2003-08-21
  • 打赏
  • 举报
回复
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a[5]={1,2,3,4,5};
vector<int> b(a-1,a+4);
for(vector<int>::iterator index=b.begin(); index!=b.end();index++)
cout<<b[*index]<<endl;
cout<<"b.size():"<<b.size()<<endl;

return 0;
}

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧