c++学习笔记小记(5)

标准库类型vector

包含头文件:#include <vector>

using std::vector;

vector是模板,不是类型,vector生成的类型必须包含vector中元素的的类型

没有引用类型的vector,有vector类型的vector

vector <int> a;

vector <vector<int>> a;

vector对象在拷贝赋值是vector对象的类型必须相同,否则会出错。


vector类型初始化:

vector <int> a(10,-1);

vector <string> b(10,"hi");

对象元素是内置类型,比如int,则元素初始值自动设为0;

对象元素是类类型,比如string,则元素初始值设为空;

vector <int> a(10);  //10个元素,每个都是0


初始值还是元素数量用花括号和圆括号来区分

vector <int> a(10);   //10个元素

vector <int> b{10};  //1个元素

vector <int> c(10,1);   //10个元素,都是1

vector <int> d{10,1};  //两个元素

花括号无法当做花括号使用时可以认为是圆括号,但是圆括号不能认为是花括号

vector <string> a{"hi"}; // 正确

vector <string> b("hi");  //错误

vector <string> c {10};  //正确

vector <string> b{10,“hi”};  //正确


向vector中添加元素:

string word;

vector<string> text;

while(cin>>word)

    text.push_back(word);

vector对象一般先声明为空对象,然后再使用时添加元素,比较高效。

vector添加元素不能使用范围for循环,因为范围for循环不能改变其所遍历序列的大小。


vector对象中的元素通过位置来访问

例如:

vector <int> v{1,2,3,4};

for(auto &i : v)    //对于v中的每个元素

    i *=i;     //元素的平方

for(auto i : v)    //对于v中的每个元素

    cout<<i<<"  ";    //输出该元素

cout<<endl;

当使用vector定义对象时,不管是什么对象,都要声明vector对象包含元素的类型。


不能用下标形式为vector对象添加元素

vector <int> a;  //a为空vector对象

for(decltype(a.size()) i = 0; i != 10;++i)

    a[i] = i;   //错误,a不包含任何元素

a是一个空vector,根本不包含任何元素,也就不能通过下标去访问任何元素,添加元素的正确方法是通过push_back来添加

for(decltype(a.size()) i = 0; i != 10;++i)

    a.push_back(i);    //正确,添加一个新元素,该元素的值是i

vector对象的下标运算符只能访问已经存在的元素,而不能用于添加元素。

通过下标访问元素可能会访问到本身不存在的元素,这样会产生严重的后果,这种错误叫做缓冲区溢出,确保下标合法的一种有效手段就是尽可能使用范围for循环

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值