STL容器中的vector初始化问题

本文详细介绍了C++ STL容器中Vector的初始化方法,包括数组习惯用法、STL习惯用法及常见错误,帮助读者深入理解Vector的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://imatlab.lofter.com/post/286ffc_a81276

对STL容器中vecto初始化一直存在一些疑问,看了这篇博文后懂了很多,所以写一写自己的理解。


一·数组习惯用法

1.定义一个已知长度的vector:

vector<int> v(10); //类似于数组是定义int a[10],注意是(),不是[];

和数组一样通过v[]索引访问数据

使用if(v.empty() )判断是否为空,v.size()判断元素个数。

2.vector<int> v(10, -1);


定义了v,它包含了十个int型的元素每个元素都被初始化为-1。

3.对于内置数组,我们通常这样初始化:


int a[6] = {1, 2, 3, 4, 5, 6};

vector不能这样初始化,但可以将vector初始化为一个已有数组的全部或一

部分,例如:

vector<int> v(a, a+6);

vector<int> v(&a[1], &a[5]);

4.vector可以在同类型中赋值


例如:

vector<string> v1;

vector<string> v2(v1); //用另一个vector初始化一个vector

v2 = v1;  //把一个vector拷贝给另一个vector


二·STL的习惯用法


对于定义一个空的vector<string> v;

1.我们只能从vector中插入元素(push_back() ),而不能和数组一样赋值


2.用迭代器iterator对vector进行索引


例如:

string s;

while (cin >> word) {
    v.push_back(s);
}

for (vector<string>::iterator it = v.begin(); it != v.end(); ++it)
    cout << *it ;
cout << endl;


三·常见错误

1.混用vector<int> v(10)和vector<int> v两种习惯用法


例如:

定义了vector<int> v;在写出v[0] = 5;是错误的。

2.对于一个给定大小的vector,任何插入操作都是在增大vector的大小


例如:

int size = 5;

vector <int> v(10);

for (int i=0; i<5; i++) {
    v.push_back(i);
}

for循环后,vector的大小为10,而不是5.


最后,感谢博主给的启发,收益很大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值