Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C/C++——vector的基本操作总结

C/C++——vector的基本操作总结

作者头像
felixzhao
发布于 2019-01-31 08:29:34
发布于 2019-01-31 08:29:34
7.3K00
代码可运行
举报
文章被收录于专栏:null的专栏null的专栏
运行总次数:0
代码可运行

标准库vector类型是C++中使用较多的一种类模板,vector类型相当于一种动态的容器,在vector中主要有一些基本的操作,接下来分别从以下的几个方面总结:

  • vector对象的定义和初始化
  • vector对象的基本操作,主要包括添加元素,遍历等

1、vector对象的定义和初始化

在vector中主要有四种定义和初始化的方法:

1.1、定义空的vector

定义的方法为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vector<T> v;

1.2、定义一个vector的副本

定义的方法为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vector<T> v1(v);

1.3、定义并初始化

定义的方法为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vector<T> v2(n, i);

定义了长度为n的vector v2,并且每个元素都是i。

1.4、定义并指定初始长度

定义的方法为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vector<T> v3(n)

采用的初始化方法为默认初始化。

1.5、例子

对于上述的四种定义方法如下图所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <vector>
using namespace std;

int main(){
    //第一种定义方法
    vector<int> v;
    for (int i = 0; i < 10; i++){
            v.push_back(i);
    }

    //第二种定义方法
    vector<int> v1(v);
    //第三种定义方法
    vector<int> v2(10, 1);
    //第四种定义方法
    vector<int> v3(10);

    printf("first: ");
    for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
            printf("%d\t", v[ix]);
    }
    printf("\n");
    printf("second: ");
    for (vector<int>::size_type ix1 = 0; ix1 != v1.size(); ix1 ++){
            printf("%d\t", v1[ix1]);
    }
    printf("\n");
    printf("third: ");
    for (vector<int>::size_type ix2 = 0; ix2 != v2.size(); ix2 ++){
            printf("%d\t", v2[ix2]);
    }
    printf("\n");
    printf("forth: ");
    for (vector<int>::size_type ix3 = 0; ix3 != v3.size(); ix3 ++){
            printf("%d\t", v3[ix3]);
    }
    printf("\n");

    return 0;
}

注:上述代码是在C中使用vector。

2、vector中的基本操作

在vector中的基本操作包括插入,删除,遍历等。

2.1、插入操作

在vector中插入元素包括两种,一种是在尾部添加元素,使用的函数是push_back()函数,另一种是在指定位置插入元素,使用到的函数是insert()函数。

其中,insert()函数的具体形式为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
insert(p, t)

指的是在迭代器p之前插入值为t的元素。具体应用如下面的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <vector>
using namespace std;

int main(){
    vector<int> v;
    for (int i = 0; i < 10; i++){
            v.push_back(i);
    }

    for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
            printf("%d\t", v[ix]);
    }
    printf("\n");

    //在开始插入10
    v.insert(v.begin(), 10);
    for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
            printf("%d\t", v[ix]);
    }
    printf("\n");

    //在10和0之间添加11
    vector<int>::iterator it;
    for (it = v.begin(); it != v.end(); it++){
            if (*it == 0){
                    v.insert(it, 11);
                    break;
            }
    }
    for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
            printf("%d\t", v[ix]);
    }
    printf("\n");

    return 0;
}

2.2、删除操作

使用erase()方法删除指定的元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
erase(p)

删除迭代器p所指向的元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <vector>
using namespace std;

int main(){
    vector<int> v;
    for (int i = 0; i < 10; i++){
            v.push_back(i);
    }

    for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
            printf("%d\t", v[ix]);
    }
    printf("\n");

    //在开始插入10,10,10
    v.insert(v.begin(), 3, 10);
    for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
            printf("%d\t", v[ix]);
    }
    printf("\n");

    //删除第二个10
    int i = 0;
    vector<int>::iterator it;
    for (it = v.begin(); it != v.end(); it++){
            i++ ;
            if (i == 2){
                    v.erase(it);
                    break;
            }
    }

    for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
            printf("%d\t", v[ix]);
    }
    printf("\n");


    return 0;
}

除此之外,还有clear()方法,清空vector中的所有元素,pop_back()方法,删除末尾的元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <vector>
using namespace std;

int main(){
    vector<int> v;
    for (int i = 0; i < 10; i++){
            v.push_back(i);
    }

    for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
            printf("%d\t", v[ix]);
    }
    printf("\n");

    //删除末尾元素
    v.pop_back();

    for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
            printf("%d\t", v[ix]);
    }
    printf("\n");


    return 0;
}

2.3、遍历

遍历通常有两种方式:

  • 通过下标
  • 利用迭代器

如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <vector>
using namespace std;

int main(){
    vector<int> v;
    for (int i = 0; i < 10; i++){
            v.push_back(i);
    }
    //利用下标      
    for (vector<int>::size_type ix = 0; ix != v.size(); ix ++){
            printf("%d\t", v[ix]);
    }
    printf("\n");

    //利用迭代器
    vector<int>::iterator it;
    for (it = v.begin(); it != v.end(); it ++){
            printf("%d\t", *it);
    }
    printf("\n");


    return 0;
}

2.4、其他

在上面的操作中,还有一些操作,如:

  • size(),返回的是vector的大小
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年06月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C/C++——set的基本操作总结
set容器中只能存储键,是单纯的键的集合,其中键是不能重复的。 set支持大部分的map的操作,但是set不支持下标的操作,而且没有定义mapped_type类型。 下面简单总结下set容器的操作: 1、set对象的定义和初始化 set对象的定义和初始化方法包括: set<T> s; set<T> s(s1); set<T> s(b, e); 其中,b和e分别为迭代器的开始和结束的标记。 例如: #include <stdio.h> #include <vector> #include <set>
felixzhao
2018/03/19
1.1K0
C++ Vector
c++ vector 简介 vector 是顺序容器的一种,vector 是可变长的动态数组(可存放任意类型),支持随机访问迭代器。所有 STL 算法都能对 vector 进行操作,要使用 vector,需要包含头文件 vector 优点 - 因其拥有一段连续的内存空间,能非常好的支持随即存取,即[]操作符。 - 根据下标随机访问某个元素的时间是常数,在尾部添加一个元素的时间大多情况下也是常数,总体来说速度很快 缺点 - 若要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且
ruochen
2021/05/20
2K0
C++ Vector
【C++】vector介绍
在之前已经介绍了string类 【C++】string类初步介绍和【C++】string进一步介绍,这次来看看C++中的顺序表vector。
zxctscl
2024/03/28
1350
【C++】vector介绍
【C++】vector的使用与题目练习
vector是表示可变大小数组的序列容器 ,本质讲,vector使用动态分配数组来存储它的元素。
平凡的人1
2023/10/15
3570
【C++】vector的使用与题目练习
【C++】————STL之vector
上面这个定义其实相当于是一维数组name[size],只不过其size可以根据需要进行变化,这就是“变长数组”的名字的由来。
用户11036582
2024/07/15
2480
【C++】STL--vector
使用STL的三个境界:能用,明理,能扩展 ,那么下面学习vector,我们也是按照这个方法去学习
用户11375356
2024/11/22
1320
【C++】STL--vector
vector介绍与使用【C++】
C++中的vector是一个动态数组,它可以根据需要自动调整大小。它存储在连续的内存块中,提供了快速的随机访问和插入操作,但删除操作可能导致内存的移动。vector是STL(标准模板库)的一部分,可以容纳任何类型的元素,包括内置类型和用户定义的类型。使用vector时,需要包含头文件,并通过std命名空间访问。vector还提供了许多成员函数,如push_back()、pop_back()、size()等,以支持各种操作。
鲜于言悠
2024/05/10
2430
vector介绍与使用【C++】
【C++】— 掌握STL vector 类:“Vector简介:动态数组的高效应用”
vector是一个顺序容器,可以看作是能够动态增长和缩小的数组。与普通的数组不同的是,vector在需要时可以自动调整其大小,以容纳新添加的元素。因此vector在使用上更加的灵活和方便,
_孙同学
2024/11/21
2560
【C++】— 掌握STL vector 类:“Vector简介:动态数组的高效应用”
【C++】STL(一)vetor的使用
reserve规则:  1、当所给值大于容器当前的capacity时,将capacity扩大到该值。  2、当所给值小于容器当前的capacity时,什么也不做。
用户11367452
2025/05/25
1150
【C++】简化源码——vector的模拟实现
这本质上与T*a,size_t size,size_t capacity是类似的:
平凡的人1
2023/10/15
2390
【C++】简化源码——vector的模拟实现
【c++】vector的使用
这是 std::vector 的默认构造函数。它创建一个空的 vector 对象,不含有任何元素。可选参数 alloc 是一个分配器对象,用于指定内存分配模型(后面会学到)。explicit 关键字表示构造函数防止隐式转换或复制初始化。大多数时候,你可以简单地省略分配器,因为它有一个默认值。
用户11029103
2024/04/25
2790
【c++】vector的使用
从零开始学C++之标准库类型(二):vector 类简介和例程
该文介绍了 C++ 中的 vector 类,包括其基本用法、常用成员函数和与数组的不同之处。同时,还介绍了如何通过迭代器访问 vector 中的元素,以及如何使用 vector 进行常用操作,如插入、删除和反转等。
s1mba
2017/12/28
8050
从零开始学C++之标准库类型(二):vector 类简介和例程
C++初阶-vector的使用及模拟
C++vector的使用及模拟 零、前言 一、什么是vector 二、vector的常用接口说明 1、vector对象常用构造 2、vector对象容量操作 3、vector对象访问及遍历操作 4、vector对象修改操作 5、vector迭代器失效问题 三、vector剖析及模拟实现 1、vector框架及常用接口展示 2、vector模拟常用接口具体细节 3、使用memcpy拷贝问题 4、动态二维数组理解 零、前言 本章将学习C++中的vector类,掌握其使用以及模拟实现 一、什么是vector
用户9645905
2022/11/30
5560
C++初阶-vector的使用及模拟
【C++】vector及模拟实现
为了方便打印vector中不同类型的数据,可以将迭代器遍历和范围for遍历封装成一个模版函数,有几点需要注意:
_小羊_
2024/10/16
1270
【C++】vector及模拟实现
【C++】—— vector使用
STL库里面构造函数参数有空间适配器(allocator),这里先不了解这一方面的内容(后面再详细学习)。
星辰与你
2024/10/17
2590
【C++】—— vector使用
C++奇迹之旅:vector使用方法以及操作技巧
本节我们将学习vector容器的使用和操作,让我们学习起来吧! 库函数网址查询:https://legacy.cplusplus.com/reference/vector/vector/?kw=vector
学习起来吧
2024/05/24
3050
C++奇迹之旅:vector使用方法以及操作技巧
vector的模拟和实现
如果已经确定vector中要存储元素大概个数,可以提前将空间设置足够,就可以避免边插入边扩容导致效率低下的问题了:
南桥
2024/05/13
1010
vector的模拟和实现
【C++】vector的基本使用
1. vector底层也是用动态顺序表实现的,和string是一样的,但是string默认存储的就是字符串,而vector的功能较为强大一些,vector不仅能存字符,理论上所有的内置类型和自定义类型都能存,vector的内容可以是一个自定义类型的对象,也可以是一个内置类型的变量。
举杯邀明月
2023/04/12
1.1K0
【C++】vector的基本使用
C++效率掌握之STL库:vector函数全解
vector 类是和 STL 库一起问世的,string 函数是在 STL 库之前创造的,为了一致性简便性,vector 、list 等类都减少了一部分不必要的函数,也将 string 加入了 STL 库
DARLING Zero two
2025/02/18
1670
C++效率掌握之STL库:vector函数全解
C++小知识之Vector用法
C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。 标准库vector类型使用需要的头文件:#include <vector>。vector 是一个类模板。不是一种数据类型,vector<int>是一种数据类型。Vector的存储空间是连续的,list不是连续存储的。
用户7886150
2021/01/19
8630
相关推荐
C/C++——set的基本操作总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验