c++知识细节-c++标准库-vertor类型

c++知识细节-c++标准库-vertor类型

简介

集合或动态数组,可以将若干对象装在里面.也被称为容器.

#include <vector>
using namespace std;
vector<int> vjihe;	//表示vjihe里面存放的是int型数据(int型对象)
//<int>:模板,vector本身就是一个类模板,<int>实际上是类模板实例化的过程,可以理解成vector是一个残缺的类类型
  • 不能往vector里装引用,因为引用仅仅是个别名,并不是对象

定义和初始化vector对象

  • 空vector
vector<string> mystr;
mystr.push_back("abc");
mystr.push_back("def");
  • 元素拷贝的初始化方式
vector<string> mystr2(mystr);	//把mystr拷贝给了mystr2
vector<string> mystr3 = mystr;	//把mystr拷贝给了mystr3
  • c++11标准中,可以用列表来初始化的方法来给值,用{}括起来
vertor<string> mystr4 = {"aaa","bbb","ccc"};
  • 创建制定数量的元素,有元素数量概念的东西,一般会用圆括号。
vertor<int> ijihe(15,200);	//创建15个int类型的元素
vertor<int> ijihe(20);	//20个0
vector<string> sjihe(5); 	//5个“”
  • 多种初始化方式,()一般表示元素数量的概念。{}一般表示元素内容的概念。
//Tips:要想正常地通过{}进行初始化,那么{}内的值的类型必须和vector后面的<>里面的元素类型相同
vertor<string> s{10};	//10个元素,此时虽是大括号,但10为元素数量,因为10不是string类型
vertor<int> i1{10,4};	//2元素,第一个为10,第二个为4;等同于初始化列表
vertor<int> i2{"hello"};	//报错

vector对象上的操作

//一般来说,vertor的常用操作为创建空vector后动态地增加/减少元素

  • empty(): 判断是否为空,返回布尔值
vertor<int> ivec;
if (iver.empty())
{
	cout << "ivec为空";
}
  • push_back(): 用于向vector的末尾增加一个元素
for(int i = 1; i<=100; i++)
{
	ivec.push_back(i);
}
  • size(): 返回元素个数
cout << ivec.size();
  • clear(): 将容器清空
ivec.clear();
cout << ivec.size();	//0
  • v[n]: 返回v中第n个元素,位置从0开始,必须小于v.size()
cout << ivec[99];	//100
  • =: 赋值
vertor<int> ivec2;
ivec2.push_back(111);
ivec2 = ivec;	//ivec2得到了100个元素,ivec2原来的元素被冲掉了
ivec2 = {11,12,13,14};
cout << ivec2.size();	//4
  • ==,!=: 相等,不相等,需要元素数量相同,对应位置的元素值也一样
ivec2 = ivec;
if (ivec2 == ivec)
	cout << "ivec2 == ivec";	//成立
ivec2.push_back(123);
if (ivec2 != ivec)
	cout << "ivec2 != ivec";	//成立
ivec.clear();
ivec2.clear();
if (ivec2 == ivec)
	cout << "ivec2 == ivec";	//成立
  • 范围for的应用
vector<int> vecvalue{1,2,3,4,5};
for (auto &vecitem : vecvalue)
{
	vecitem *= 2;	//扩大一倍
}
  • 范围for进一步讲解
vector<int> vecvalue{1,2,3,4,5};
for (auto vecitem : vecvalue)
{
	vecvalue.push_back(888);	//序列结束位置改变了,导致输出彻底乱套
	cout << vecitem;	
}
//结论:在遍历一个容器的过程中,千万不要改动vector容器的容量,增加/删除都不可以

迭代器遍历容器时,容器的大小不可以发生变化。当容器扩大时,迭代器指向扩大的部分并不能得到容器元素,而是越界。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值