标准库类型vector

文章详细介绍了C++标准库中的vector容器,包括如何定义和初始化vector,如何向vector添加元素,其他如empty()、size()等操作,以及如何通过迭代器访问和操作vector的元素。此外,还展示了使用迭代器进行元素输出和运算的应用。
摘要由CSDN通过智能技术生成


前言

标准库类型vector表示对象的集合,其中所有的对象的类型必须相同。集合中每个对象都有一个索引,用于访问对象,所以vector被称为容器。


一、定义和初始化vector

#include<iostream>
#include<vector>
# include <string>
using namespace std;
int main()
{
	vector<int> v1;  //v1是一个空vector,其中int为vector的类型
	vector<int> v2(v1);  //v2包含v1中的所有元素
	vector<int> v2=v1;//等价于vector<int> v2(v1)
	vector<int> v3(6,8);//v3中包含6个元素,且6个元素都是8
	vector<int> v4(8);//v4包含了8个重复的执行了初始化操作的对象
	vector<int> v5{ 1,2,3,4,5,6 };//v5包含了这6个元素
	vector<int> v5={ 1,2,3,4,5,6 };//等价于vector<int> v5{ 1,2,3,4,5,6 }
}

二、向vector添加元素

向vector添加元素时,使用push_back()函数,将元素插入vector的尾端。

#include<iostream>
#include<vector>
# include <string>
using namespace std;
int main()
{
	vector<int> v1; 
	int word=1;
	while (cin >> word)
	{
		v1.push_back(word);
	}
}

当输入完成后,需要用“/0”使循环退出


三,其他vector操作

除了push_back以外,vector还提供了其他几种操作,总体上跟string相似。

#include<iostream>
#include<vector>
# include <string>
using namespace std;
int main()
{
	vector <int> v;
	vector <int> v2;
	v.empty();//如果v不含有任何元素,则返回真,否则返回假
	v.size();//返回v中元素个数;
	v[ 2 ];//返回v上第二个元素的引用
}

四,vector中的元素的输出

使用函数for

for(auto i,vector);

将vector中的元素依次赋给i。
具体操作如下:

#include<iostream>
#include<vector>
# include <string>
using namespace std;
int main()
{
	vector <int> v{1,2,3,4,5,6,7};
	int i;
	for (auto i : v)
		cout << i << endl;
}

运行结果:
1
2
3
4
5
6
7


五,迭代器的使用

其实我们除了使用下标进行访问vector对象的元素,还可以使用迭代器,迭代器类似于指针类型,但和指针不一样的是,迭代器不是使用取地址符,有迭代器的类型可以同时拥有返回迭代器的成员,如下:

auto b=v.begin();
auto c=v.end();

其中v为vector类型,其中begin是负责指向第一个元素的迭代器,end负责指向尾元素的下一位置。

#include<iostream>
#include<string>
#include<vector>
//#include <ctype.h>
using namespace::std;
int main()
{
	string str("i love you");
	for (auto i = str.begin(); i != str.end(); ++i)
		*i = toupper(*i);
	cout << str << endl;

	system("pause");
	return 0;
}

应用将字母转换为大写


六,迭代器的运算

可把迭代器传回的元素当作指针,进行位置的加减以及位置的判断
应用:首位和后位的相加:

#include <iostream>
#include <vector>
using namespace std;
int main()
{
	vector<int> ivec;
	int i;
	while (cin >> i)
	{
		ivec.push_back(i);
	}
	for (auto it = ivec.begin(); it != ivec.end() - 1; ++it)
		cout << *it + *(it + 1) << " ";
	cout << endl;
	for (auto it1 = ivec.begin(), it2 = ivec.end() - 1;it1 < it2; ++it1, --it2)
		cout << *it1 + *it2 << " ";
	cout << endl;
	return 0;
}

总结

介绍了vector等相关用法,相比较于数组,vector的存储空间是动态,相对比较灵活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值