C++ vector容器基本操作

学习c++后,我们知道c++的模板库中提供了很多有用的容器,其中一种就是vector。

vector类似c语言中的数组,但是一种动态数组,具有非常灵活的多种特性,有各种函数供使用,能让我们更好地实现算法,简化我们的操作(怎么感觉像棒读ppt)

下面给出vector的常用操作,跳过介绍原理,供新手快速上手使用

常用文件头

#include <vector>(包含在#include <bits/stdc++.h>中),也可以和其他一些库配合使用

1.定义和初始化

//1.定义空vector
vector<int> v1;//定义一个数据类型为整形的容器v1

//2.定义并指定大小
vector<int> v2(10);//定义一个大小为10的容器(下标默认从0开始),所有元素默认为0

/*也可以这样
vector<int> v2;
v2.resize(n);
*/

//3.定义并赋初值
vector<int> v3(15,30);//定义一个大小为15的容器,所有元素赋值为30

/*也可以这样
vector<int> v3(15);
fill(v.begin(), v.end(), 30);
*/

//4.定义并用列表初始化(C++11以上可用)
vector<int> v4 = {1, 2, 3, 4, 5};//手动赋值

//5.复制vector
vector<int> v5(v4);
          |   |
          新 原
           
//6.多个数组同时创建(同类型)
vector<int> v6(10),v7(20),v8(50);

//7.二维数组
vector<vector<int>> v(n, vector<int>(m, 0));//定义一个n行m列的二维数组,初始值为0
//比较麻烦,感觉不如int v[m][n] = {0};简便
//访问元素同c风格数组

2.增删元素

vector<int> v;

//尾部操作(最常用)
v.push_back(1);//在数组尾部增加一个空间,并添加进元素1
int a = 10;
v.push_back(a);//添加变量也可以


v.pop_back();//删除最后一个元素


//其他位置插入和删除
v.insert(v.begin(), 5);//开头插入5
v.insert(v.begin() + 2, 16);//第三个位置插入16
|
插入位置

//注意,insert函数插入之后,后面的元素会自动后移一位,较c风格数组更适合做插入操作


v.erase(v.begin() + x)//删除x+1位的元素,同样后面的元素会自动前移

v.erase(v.begin() + 1, v.begin() + 5)删除2~6位元素(即下标为1~5)


v.clear();//清除所有元素,size变为0

v.empty();//返回布尔值,判断容器是否为空

3.访问和遍历数组

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

cout << v.size() << endl;//求数组大小

cout << v[0] << endl;//下标访问,和数组一样

// 访问首尾
cout << v.front() << endl;//第一个

cout << v.back() << endl;//最后一个

//不要用cout << v.begin/end(),它们表示位置而非值


// 传统for循环遍历
for(int i = 0; i < v.size(); i++){
cout << v[i] << " ";
}


// c++11遍历容器
// x 代表 v 中的每一个元素的值
for (int x : v) {
  cout << x << " ";
}

// 如果需要修改元素,加个&(引用)
for (int &x : v) {
  x = x + 1; //所有元素+1
}
for (int &x : v) {
  cin >> x;//输入
}


//无需分配空间的写法
int temp;

while(结束输入条件){
cin >> temp;
v.push_back(temp);
}
//更难的不写了,要想简化也可以写宏定义

4.与<algorithm>库配合

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


//排序:时间复杂度O(nlogn),形式简便

sort(v.begin(), v.end());//最主要的,默认从小到大按字典序排列
sort(v.begin(), v.end(),greater<int>());//从大到小

//进阶:Lambda表达式
语法:[](类型 a, 类型 b) { 排序规则 }
sort(v.begin(), v.end(), [](int a, int b) {
return abs(a) < abs(b);//绝对值小的排在前面
});

//逆序排列
reverse(v.begin(), v.end());

(其他的vector有关函数会在其他篇介绍,新手入门学习上面的够了)

总的来说,vector在算法使用方面实用性还是超过c风格数组的,强烈建议入坑c++的同学们掌握!

评论

  1. 神秘人
    2 周前
    2025-12-24 16:00:21

    tql

  2. 111
    2 周前
    2025-12-25 18:16:15

    tql

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇