请教,STL中定长vector的用法,我发现如果按正常调用方法调用会有问题

致我们即将逝去D青春 2011-08-01 09:01:37
比如定义vector<int> v(3)
当我插入pushback4个数据时
for (vector<int>::iterator it = v.begin(); it != v.end(); it++)这样打出来的元素个数有7个之多。谁可以解释下,并给出个正确的用法。
另外,我发现无论定义时定义多少个总是在PUSHBACK的个数在加的,感觉如果这样用,不能用这个方法插入元素一样。
谢谢


...全文
230 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
答非所问,还是结贴吧,分数还是会给的
  • 打赏
  • 举报
回复
7楼的,这样不行的吧,我试过的。

11楼的,这样不行的吧,我试过的。
z8323664 2011-08-07
  • 打赏
  • 举报
回复
写错了 是ivec.push_back();
z8323664 2011-08-07
  • 打赏
  • 举报
回复

#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> ivec(3);// 相当于ivec(3,0)
int val;
while(cin>>val)//ctrl+z结束
{
ivec.push(val);//这个是在前面三个基础上增加元素. vector不需要提前定义有多少个元素。所以叫他可变长数组
}
vector<int>::iterator it=ivec.begin();
for(;it!=ivec.end();++it)
cout<<*it<<endl;
return 0;
}
z8323664 2011-08-07
  • 打赏
  • 举报
回复
你先分配了3个为0的元素, 然后又push_back() 4个元素 总共7个元素
前三个是0
你在循环里用cout<<*it<<endl; 就能看到结构了
ysjyniiq 2011-08-06
  • 打赏
  • 举报
回复
vector用于连续内存,当你vector<int> v(3)时,它只申请3个元素元素的空间,当你再push一个进去的时候,它会根据一定的策略重新申请内存,然后再将原来三个元素复制过去,将原来的内存释放掉,这个时候原来的iterator当然也会全部失效,你可以想像到有多伤性能。
定长vector一般用于提高性能,但为了达到这个目的,使用的时候不要超过这个定长。
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 maimaiti123 的回复:]

这样不行的吧
[/Quote]
就按照 #4 说的方法用。
  • 打赏
  • 举报
回复
UP.....................
buyong 2011-08-01
  • 打赏
  • 举报
回复
vector<int> v(3)
之后你可以v[0]=...修改第一个内容。
  • 打赏
  • 举报
回复
但是我关心的是他这种定义定长的好处与用法。能用起来才好
fishion 2011-08-01
  • 打赏
  • 举报
回复
explicit vector(
size_type _Count
);

_Count
The number of elements in the constructed vector.

// Create a vector v1 with 3 elements of default value 0
vector <int> v1( 3 );

下面是MSDN上的例子
cout << "v1 =" ;
for ( v1_Iter = v1.begin( ) ; v1_Iter != v1.end( ) ; v1_Iter++ )
cout << " " << *v1_Iter;
cout << endl;
输出
v1 = 0 0 0

就是说,它会先初始化插入你所定义个数的元素,所以你的运行情况是正常的
zyq5945 2011-08-01
  • 打赏
  • 举报
回复
vector<int> v;
再pushback4就是4个了。
  • 打赏
  • 举报
回复
这样不行的吧

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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