STL—vector(一)

简介: vector就是边长数组,相比较与数组我们需要提前规定它的容量,它可以根据运算自动改变数组的长度,我们在平时写题的时候可能会遇到爆内存的情况,这就是我们数组长度开太长的结果,在这个时候我们就可以用vector去存储我们在使用vector的时候,需要添加头文件#include <vector>

文章目录

一、什么是vector

二、vector的操作

1.vector的定义

2.vector内元素的访问

(1)通过下标访问

(2)通过迭代器访问

3.vector中的函数

(1)push_back()

(2)pop_back()

(3)size();

(4)clear()

(5)insert()

(6)erase()

删除单个元素

删除一个区间内的元素


一、什么是vector

vector就是边长数组,相比较与数组我们需要提前规定它的容量,它可以根据运算自动改变数组的长度,我们在平时写题的时候可能会遇到爆内存的情况,这就是我们数组长度开太长的结果,在这个时候我们就可以用vector去存储


我们在使用vector的时候,需要添加头文件#include <vector>


二、vector的操作

1.vector的定义

vector<typename> name;

typename可以是任意的数据类型,当然也可以是STL中的其他容器,例如vector,set,queue。name的话就是你给这个vector数组起的名字,比如我们可以起名叫a,当然也可以是其他的名字,下面是几个vector的例子

vector<int> a;
vector<double> b;
vector<char> c;
vector<vector<int>> v;   //这里如果报错的话,写成如下样子:
vector<vector<int> > v;
//报错原因是C++11以前的编译器会把这个翻译成移位操作

2.vector内元素的访问

(1)通过下标访问

和数组的访问一致,对于

vector<int> a;

来讲,我们可以直接通过v[0]v[1]进行访问,注意这里的下标是从0 ~ v.size() - 1v,size()是v内的元素数量,后面我们会进行讲述.

(2)通过迭代器访问

迭代器我们可以理解成一个类似于指针的东西

定义一个迭代器:

vector<typename>::iterator it;

这样it就是vector<typename>::iterator类型的变量,typename就是定义vector时候的类型,当然it也可以写成t或者其他的样子,这里写成it是习惯,有了it这个迭代器,我们就可以通过*it来访问vector中的元素,下面我们距离来说明:

v.push_back(i);的意思是把i放入v这个vector中,下面我们会有详细的讲解

v.begin()是v的首元素地址

v.end()是取v的尾元素地址的下一个地址

在这里的begin()和end()是迭代器的开始和结束标志,美国人的思维习惯左闭右开[ )

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> v;
    for (int i = 0; i < 10; i ++ ) v.push_back(i);
    vector<int>::iterator it = v.begin();
    for (int i = 0; i < 10; i ++ ) cout << *(it + i) << ' ';
    return 0;
}

输出结果为0 1 2 3 4 5 6 7 8 9

所以v[i]*(v.begin() + i)是等价的

利用迭代器的自增和字减去遍历元素

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> v;
    for (int i = 0; i < 10; i ++ ) v.push_back(i);
    //注意迭代器的遍历不能写成 it < v.end();结束循环条件只能是 it != v.end();
    for (vector<int>::iterator it = v.begin(); it != v.end(); it ++ ) 
      cout << *it << ' ';
    return 0;
}

当然我们可以通过auto缩写

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> v;
    for (int i = 0; i < 10; i ++ ) v.push_back(i);
    //注意迭代器的遍历不能写成 it < v.end();结束循环条件只能是 it != v.end();
    for (auto it = v.begin(); it != v.end(); it ++ ) 
      cout << *it << ' ';
    return 0;
}

输出结果为0 1 2 3 4 5 6 7 8 9






目录
相关文章
|
3月前
|
存储 编译器 C语言
【c++丨STL】vector的使用
本文介绍了C++ STL中的`vector`容器,包括其基本概念、主要接口及其使用方法。`vector`是一种动态数组,能够根据需要自动调整大小,提供了丰富的操作接口,如增删查改等。文章详细解释了`vector`的构造函数、赋值运算符、容量接口、迭代器接口、元素访问接口以及一些常用的增删操作函数。最后,还展示了如何使用`vector`创建字符串数组,体现了`vector`在实际编程中的灵活性和实用性。
136 4
|
9月前
|
存储 C++ 索引
C++:STL - vector
C++:STL - vector
99 1
|
9月前
|
算法 Java 容器
STL_vector
STL_vector
56 0
|
存储 C++ 容器
【C++】STL之vector操作
【C++】STL之vector操作
|
存储 算法 编译器
【剖析STL】vector
vector的介绍及使用 1.1 vector的介绍 cplusplus.com/reference/vector/vector/ vector是表示可变大小数组的序列容器。
57 0
|
存储 Linux C++
C++【STL】之vector的使用
C++ STL vector类常用接口详细讲解,干货满满!
137 0
C++【STL】之vector的使用
|
小程序 C++ 容器
C++ STL学习之【vector的使用】
vector 是表示可变大小数组的序列 容器,其使用的是一块 连续 的空间,因为是动态增长的数组,所以 vector 在空间不够时会扩容;vector 优点之一是支持 下标的随机访问,缺点也很明显,头插或中部插入效率很低,这和我们之前学过的 顺序表 性质很像,不过在结构设计上,两者是截然不同的
286 0
C++ STL学习之【vector的使用】
|
算法 C++ 容器
STL之vector
STL之vector
100 0
|
Linux 编译器 C++
【C++】-- STL之vector详解(二)
【C++】-- STL之vector详解
171 0
【C++】-- STL之vector详解(二)
|
存储 C++ 容器
【C++】-- STL之vector详解(一)
【C++】-- STL之vector详解
160 0
【C++】-- STL之vector详解(一)