STL神器之如意金箍棒——vector

本文介绍了如何使用C++中的vector容器来动态记录购物清单,并输出总价。通过实例展示了vector的初始化、元素添加及遍历输出。文章强调了vector作为动态数组的灵活性,并提供了简单的代码示例,帮助C++初学者理解其用法。
摘要由CSDN通过智能技术生成

引子

一天,苦力怕接到一个朋友说他要去逛街,要我帮他写个程序,每次他买了个东西,就让程序记下来,最后再把他买的所有东西的价格输出来,看看他有没有搞错。

就是这个简单的问题,难倒了一个又一个C++初学者,用数组呢,又不知道开多大,伤透了脑筋。

在这个时候

我们的神器vector出场了。


神马是vector

vector是一个STL的容器,准确说是一个模板,不过模板这玩意儿你们不知道,也不用知道,反正我们不用写,用现成的就行了。^_^

vector在标准教材《C++primer》里被称为向量,但是我觉得叫动态数组更恰当,俗称如意金箍棒。

所以vector到底是个啥呢?

其实啊,它就是一个长度可变的数组,可长可短,非常nice。


vector的各种操作

首先,因为vectorSTL里的,所以需要头文件,别忘了把它包含进去哦

#include <vector>

初始化

因为vector是一个模板,也就相当于说着它能驾奴所有的类型,甚至包括我们自己定义的struct,class

这也就意味着vector在定义的时候就要告诉它里面放的是个啥

接下来我就列举几种初始化的方式

代码形式作用
vector<X> x1创建一个X类型的空vector
vector<X> v1(v2)创建一个X类型的vector v2的副本
vector<X> v1 = v2同上一个
vector<X> v1 (n, dat)创建一个X类型的拥有n个dat元素的vector
vector<X> v1 (n)创建一个X类型的拥有n个默认初始值的元素
vector<X> v1 = {a, b...}创建一个X类型初始值为列表中的vector
vector<X> v1{a,b...}同上一个

如表所示,虽然vector初始化的方式有7种,但是其实最常用的还是第一种,至于元素基本上手动加还更不容易错,至于后面几个大家了解下就可以了。

 各种函数

vector有几个函数给我们调用,接下来苦力怕再用一张表来总结一下

名称作用
v.push_back(x)在v的末尾添加一个值为x的元素
v.size()返回v的大小
v.empty()返回一个bool,当v为空时为true,否则为false
v.resize(n, t)

把v变成一个长度为n, 每个元素为t的vector

不是很多,对吧。^_^

对了,忘记说了

vector可以像数组那样用下标访问

比如这样

cout << v[3] << endl;

当然如果vector的大小都没有达到下标会报错的哦


其他

关于vector的比较问题,有一点争议

但是其实很简单,判断等不等于就是判断两个vector分别位置上的数值相不相等,

至于大于小于的话,就是按字典序 (不知道字典序是啥的可以上网搜一下)

还有就是关于迭代器,迭代器定义强烈建议用auto,要不然光一个类型会把你写吐的。

vector的迭代器支持begin(), end(),以及+=, -=操作,具体操作就不再废话了。


引子做法

我们只需要开一个vector来记录他买的东西的价格,最后再把整个vector遍历一遍输出就行了

代码:

#include <iostream>
#include <vector> // 注意不要漏了
using namespace std;
int main() {
    vector<int> things; // 传说中的vector
    int t; // 用来存储价格
    while (cin >> t) {
        things.push_back(t); // 加入操作
    }
    for (int i : things) { // 范围for循环,C++11新特性
        cout << i << endl;
    }
    return 0;
}

今天苦力怕就讲到这里咯,再见。^_^

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值