C++ STL标准库模板之vector(向量容器)

STL标准库模板之vector(向量容器)

 

头文件包含 #include <vector>

 

之所以说vector是一个向量容器

是因为vector可以像容器一样存放各种数据类型的对象,并且可以动态的拓展容器大小

简单的说,vector就是一个存放任意数据类型(可以是int、string、float等)的动态数组,能够增加或者压缩数据

使用标准模板库vector的好处在于可以通过内部的一些方法对数据进行操作,省去数据结构的相关处理

<>里面的代表声明对象的数据类型

 

 

1.vector 对象的定义和初始化

 

 

vector<int> a; //创建一个int类型的空的vector对象,没有任何元素

vector<int> b(a); //b 是 a 的副本

vector<string> str(10, "mike"); //10个str,每个的内容都是"mike"

vector<int> c(10); //创建10个int类型vector对象,相当于c[10],每个元素的值默认为0

 

 

2.vector 对象常用操作

3.演示代码:

#include <iostream>

#include <vector>



using namespace std;

int main() {



// vector<int> a;//定义int类型的a对象

vector<int> a(5); //创建5个int类型vector对象,相当于a[5]

// vector<int> b(a);//b是a的副本

if (a.empty() == true) // empty()判断是否为空,为空返回true

{

cout << "vector 对象为空\n";

} else if (a.empty() == false) {

cout << "vector 对象不为空\n";

}

cout << "size = " << a.size() << endl; // size()返回容器的大小

for (int i = 1; i < 6; i++) {

a.push_back(i); //将i压到容器的最后

}

cout << "size = " << a.size() << endl;

for (int j = 0; j < a.size(); j++) {

cout << a[j] << ","; //用数组下标的形式访问

}

printf("\n");



a.pop_back(); //删除最后一个元素

cout << "size = " << a.size() << endl;



vector<int> b(a); //将a复制给b

cout << "这是b: \n";

for (int k = 0; k < b.size(); k++) {

cout << b[k] << ",";

}

printf("\n");

cout << "这是a: \n";

for (int j = 0; j < a.size(); j++) {

cout << a[j] << ","; //用数组下标的形式访问

}

printf("\n");

a.clear(); //清空a容器

cout << a.size() << endl;

cout << b.size() << endl;

cout << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n";

return 0;

}

运行结果:

 

 

 

4.迭代器操作 vector 对象

除了使用下标来访问 vector 对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代器(iterator) 。

迭代器是一种检查容器内元素并遍历元素的数据类型。实际上,vector 对象相当于数组,而迭代器就相当于指针。

 

#include <iostream>

#include <vector>



using namespace std;



int main( )

{

vector<int> v(10, 5); //有10个元素,每个元素的值都是5



//通过迭代器把所有元素的值打印出来

vector<int>::iterator it;

for( it=v.begin(); it!=v.end(); it++){

cout<< *it << ", ";

}

cout << endl;



//通过迭代器给所有元素赋值为1

for( it=v.begin(); it!=v.end(); it++){

*it = 1;

}



cout << endl;

//通过迭代器把所有元素的值打印出来

for( it=v.begin(); it!=v.end(); it++){

cout<< *it << ", ";

}

cout << endl;



it = v.begin(); //返回指向容器最开始位置元素的指针(迭代器)

//删除指针it+1指向位置的元素,返回指向下一个元素位置的指针(迭代器)

v.erase(it+1);



cout << endl << "after erase:\n";

//通过迭代器把所有元素的值打印出来

for( it=v.begin(); it!=v.end(); it++){

cout<< *it << ", ";

}

cout << endl;



it = v.begin();

//在位置it后插入3个5

v.insert(it, 3, 5);



cout << endl << "after insert:\n";

//通过迭代器把所有元素的值打印出来

for( it=v.begin(); it!=v.end(); it++){

cout<< *it << ", ";

}

cout << endl;



return 0;

}

 

运行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值