iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中vector怎么使用
  • 495
分享到

C++中vector怎么使用

2023-06-26 06:06:05 495人浏览 泡泡鱼
摘要

小编给大家分享一下c++中vector怎么使用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一,什么是vectorvector(向量)是一个封装了动态大小数组的顺序容器。能够存放各种类型的对象(注:一个容器中所有对象必须是

小编给大家分享一下c++中vector怎么使用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

一,什么是vector

vector(向量)是一个封装了动态大小数组的顺序容器。能够存放各种类型的对象(注:一个容器中所有对象必须是同一种类型的)。可认为vector是一个能够存放任意类型的动态数组,可添加和删除数据(因为动态,所以相比数组节省空间)。

c++ primer的作者说到,在实际的编程中,我们作为程序员应该避免用到低级数组和指针,而更应该多用高级的vector和迭代器。

二,容器特性

1,顺序序列

顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。

2,动态数组

支持对序列中的任意元素进行快速直接访问,可通过指针进行该操作。提供在序列末尾增加/删除元素的操作。

3,能够感知内存分配器

容器使用一个内存分配器对象来动态地处理它的存储需求。

三,常用基本函数实现

vector(): 构造函数,创建一个空vector

vector(int nSize): 创建一个vector,元素个数为nSize

vector(int nSize,const t& t): 创建一个vector,元素个数为nSize,且值均为t

vector(begin,end): 复制[begin,end)区间内另一个数组的元素到vector中

~vector(): 析构函数,销毁容器对象并回收所有分配内存

void push_back(const T& x): 向量尾部增加一个元素X

iterator insert(iterator it,const T& x): 向量中迭代器指向元素前增加一个元素x

iterator insert(iterator it,int n,const T& x): 向量中迭代器指向元素前增加n个相同的元素x

iterator insert(iterator it,const_iterator first,const_iterator last): 向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据

iterator erase(iterator it): 删除向量中迭代器指向元素

iterator erase(iterator first,iterator last): 删除向量中[first,last)中元素

void pop_back(): 删除向量中最后一个元素

void clear(): 清空向量中所有元素,即size值全部为0,但存储空间没有改变(释放)

reference at(int pos): 返回pos位置元素的引用

reference front(): 返回首元素的引用

reference back(): 返回尾元素的引用

iterator begin(): 返回向量头指针,指向第一个元素

iterator end(): 返回向量尾指针,指向向量最后一个元素的下一个位置

bool empty() const: 判断向量是否为空,若为空,则向量中无元素

int size() const: 返回向量中元素的个数

int capacity() const: 返回当前向量所能容纳的最大元素值

int max_size() const: 返回最大可允许的vector元素数量值

void swap(vector&): 交换两个同类型向量的数据,交换两个容器内容,涉及存储空间分配问题

void assign(int n,const T& x): 设置向量中前n个元素的值为x

void assign(const_iterator first,const_iterator last): 向量中[first,last)中元素设置成当前向量元素

四,基本用法

1,头文件

vector是C++标准库STL中的数据结构,因此要使用vector,需要在程序头添加:

#include <vector>using namespace std;

2,创建和使用

创建vector对象

//创建一个普通一维动态数组vector<int> vec;//创建一个二维动态数组vector<vector<int>> vec2;//尾部插入数字:vec.push_back(1);//尾部删除数字:vec.pop_back();//使用下标访问数组,下标从0开始cout<<vec[0]<<endl;//使用迭代器访问元素vector<int>::iterator it;for(it = vec.begin();it != vec.end();it++){cout<< *it <<endl;}//插入元素vec.insert(vec.begin()+i,a);//删除元素vec.erase(vec.begin()+i);vec.erase(vec.begin()+i,vec.end()+j);//向量大小:vec.size();//清空向量:vec.clear();

vector的元素可以是int,double,string,结构体,注意:结构体要定义为全局的,否则会出错。

3,算法

(1) 使用reverse将元素翻转:

// 需要头文件 #include <alGorithm>reverse(vec.begin(),vec.end());

(2)使用 sort 排序:

// 需要头文件#include<algorithm>,sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).

五,vector占用内存空间问题

1,vector内存自增长

与其他容器不同,其内存空间只会增长,不会减小。

为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元素、撤销旧空间,这样性能难以接受。

因此STL实现者在对vector进行内存分配时,其实际分配的容量要比当前所需的空间多一些。就是说,vector容器预留了一些额外的存储区,用于存放新添加的元素,这样就不必为每个新元素重新分配整个容器的内存空间。

每当vector容器不得不分配新的存储空间时,会以加倍当前容量的分配策略实现重新分配。

2,vector内存释放

所有内存空间是在vector析构时候才能被系统回收。empty()用来检测容器是否为空的,clear()可以清空所有元素,但无法释放内存。如果需要空间动态缩小,可以考虑使用deque或者使用其他容器。

六,疑问解答

1,vector与数组的区别

相同点:

都是可以对同一种类型数据进行存储

都可以用迭代器操作

都可以通过下标进行数据处理

不同点:

vector动态长度,可通过push_back和pop_back方法增加和缩短长度;数组长度在定义时已经确定,不可更改

vector的下标必须是无符号数;数组下标可以是有符号数

2,C++11关于vector的新增特性有:

a.cbegin();    // 返回指向容器中第一个元素的const_iteratora.cend();      // 返回指向容器中最后一个元素的const_iteratora.crbegin();   // 反转迭代器, 返回指向容器中最后一个元素的const_iteratora.crend();     // 反转迭代器, 返回指向容器中第一个元素的const_iteratora.emplace();   // 类似insert功能,但比它更有效率a.emplace_back(); //类似push_back, 但比它更有效率

看完了这篇文章,相信你对“C++中vector怎么使用”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网其他教程频道,感谢各位的阅读!

--结束END--

本文标题: C++中vector怎么使用

本文链接: https://www.lsjlt.com/news/307068.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中vector怎么使用
    小编给大家分享一下C++中vector怎么使用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一,什么是vectorvector(向量)是一个封装了动态大小数组的顺序容器。能够存放各种类型的对象(注:一个容器中所有对象必须是...
    99+
    2023-06-26
  • c++中vector怎么用
    这篇文章将为大家详细讲解有关c++中vector怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、接口介绍插入数据void push_back(const T& x)在当前vector尾部插...
    99+
    2023-06-14
  • java中vector怎么使用
    在Java中,Vector是一种动态数组,可以用于存储和操作对象。下面是使用Vector的一些常用操作: 导入Vector类:首...
    99+
    2023-10-26
    java vector
  • 【C++】vector的使用
    1、vector的使用 #define _CRT_SECURE_NO_WARNINGS 1#include #include using namespace std;void Test1(){vector v1;vector v2(10,...
    99+
    2023-08-30
    c++
  • C++STL中vector容器的使用
    目录一、vector(1)区分size()和capacity()(2)迭代器失效(3)区分const_iterator和const iterator(4)区分reserve()和re...
    99+
    2024-04-02
  • C++中的vector怎么实现
    今天小编给大家分享一下C++中的vector怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。vector介绍vecto...
    99+
    2023-07-05
  • C++中vector<vector<int> >的基本使用方法
    目录前言一、为什么是vector?二、什么是vector?2.0 容器特性2.1. 基本操作2.2. 常见定义方法:2.3. 使用方法2.3.1 创建一维vector:2.3.2 定...
    99+
    2024-04-02
  • C++中STL标准库std::vector怎么用
    小编给大家分享一下C++中STL标准库std::vector怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 简介vector 是表示可以改变大小的数组的...
    99+
    2023-06-29
  • 如何使用C++的vector
    本篇内容介绍了“如何使用C++的vector”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!创建对象在C++中,官方文档所给的创建对象方法有4...
    99+
    2023-06-25
  • STL中vector怎么用
    小编给大家分享一下STL中vector怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.vector是什么vector是一个表示可变大小数组的容器。vect...
    99+
    2023-06-29
  • Vector和Stack怎么在JAVA 中使用
    这篇文章将为大家详细讲解有关Vector和Stack怎么在JAVA 中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、Vector&Stack的基本介绍和使用我们先看下JDK种...
    99+
    2023-05-30
    java vector stack
  • c++ 中vector 常见用法
    目录1、c++ 中 vector2、初始化3、常用函数 1、c++ 中 vector vector有两个参数,一个是size,表示当前vector容器内存储的元素个数,一个是capa...
    99+
    2024-04-02
  • c++ vector的push_back如何使用
    在C++中,vector是一种动态数组,可以根据需要动态增长或缩小。push_back()函数用于在vector的末尾添加一个新元素...
    99+
    2024-04-02
  • c++怎么输出vector中的元素
    要输出vector中的元素,可以通过遍历vector并输出每个元素。以下是一个示例代码: #include <iostream...
    99+
    2024-03-02
    c++
  • c++中vector的使用和模拟实现
    一、接口介绍 1、插入数据 void push_back(const T& x) 在当前vector尾部插入x,如果容量不够扩大二倍。 iterator insert(it...
    99+
    2024-04-02
  • C++容器Vector如何使用
    今天小编给大家分享一下C++容器Vector如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Vector简介Vecto...
    99+
    2023-06-30
  • C++中怎么初始化vector容器
    C++中怎么初始化vector容器,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、STL的基本概念STL(Standard Template Library)标准模板库大...
    99+
    2023-06-20
  • java中Vector类怎么用
    这篇文章主要讲解了“java中Vector类怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java中Vector类怎么用”吧!public void add(intindex,&nbs...
    99+
    2023-06-29
  • c++中std::vector的作用是什么
    在C++中,std::vector是STL(Standard Template Library)中的一个容器类,用来存储一组元素。它...
    99+
    2024-03-12
    c++
  • C++如何使用std::vector容器
    这篇文章给大家分享的是有关C++如何使用std::vector容器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言vector实质是C++的一个类,与数组很相似,但是vector的优势是可以动态扩展,不需要考虑...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作