iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++入门笔记之std::vector容器详解
  • 204
分享到

C++入门笔记之std::vector容器详解

2024-04-02 19:04:59 204人浏览 泡泡鱼
摘要

目录前言1. vector的构造函数原型: 2. vector的赋值函数原型:3. vector的容量和大小函数原型:4. vector的插入和删除函数原型:5. vector的存取

前言

vector实质是c++的一个类,与数组很相似,但是vector的优势是可以动态扩展,不需要考虑其内存大小。

定义:

向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。

特性:

1.顺序序列

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

2.动态数组

支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作。操供了在序列末尾相对快速地添加/删

除元素的操作。

3.能够感知内存分配器的(Allocator-aware)

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

1. vector的构造函数原型:

    vector<T> data; //使用模板类,默认构造函数

    vector(data.begin(),data.end()); //将data的【begin(),end())区间中的元素拷贝给本身,注意是数学中的前闭后开 区间

    vector(n,elem); //将n个elem元素拷贝给本身

    vector(const vector &data); //拷贝构造


#include <iOStream>
#include <vector>
 
using namespace std;
 
void fun_print_vector(std::vector<int>&data)
{
    //std::vector<int>::iterator it; //可以用auto代替。
    for(auto it_data = data.begin();it_data != data.end();it_data++){
        std::cout << *it_data << " " << std::endl;
    }
}
void fun_vector()
{
    vector<int> data1; //默认构造
    data1.push_back(1);
    data1.push_back(2);
    data1.push_back(3);
    fun_print_vector(data1); //打印:1 2 3 
 
    vector<int> data2(data1.begin(),data1.end()); //通过区间进行构造
    fun_print_vector(data2); //打印:1 2 3 
 
    vector<int> data3(4,1);//4个1构造
    fun_print_vector(data3); //打印:1 1 1 1 
 
    vector<int> data4(data3); //拷贝构造
    fun_print_vector(data4); //打印:1 1 1 1 
 
}

2. vector的赋值函数原型:

vector& operator=(cost vector &data); //重载操作符

vector& assign(beg,end); //将[ beg,ed )区间中的数据拷贝赋值给本身

vector& assign(n,elem); //将n个elem拷贝赋值给本身


#include <iostream>
#include <vector>
 
using namespace std;
 
void fun_print_vector(std::vector<int>&data)
{
    //std::vector<int>::iterator it; //可以用auto代替。
    for(auto it_data = data.begin();it_data != data.end();it_data++){
        std::cout << *it_data << " " << std::endl;
    }
}
void fun_vector()
{
    vector<int> data1;
    for(int i = 0;i < 6;i++){
        data1.push_back(i);
    }
    fun_print_vector(data1); //打印 0 1 2 3 4 5
 
    vector<int> data2;
    data2 = data1;
    fun_print_vector(data2); //打印 0 1 2 3 4 5
 
    vector<int> data3;
    data3.assign(data1.begin(),data1.end());
    fun_print_vector(data3); //打印 0 1 2 3 4 5
 
    vector<int> data4;
    data3.assign(3,6);
    fun_print_vector(data4); //打印 6 6 6
}

3. vector的容量和大小函数原型:

empty(); //判断容器是否为空

capacity(); //容器的容量    capacity一定会大于等于size

size(); //返回容器中元素的个数

resize(int num); //重新指定容器的长度为num,若容器变长,则以默认值填充新的位置;若容器变短,则末尾超出的元素被删除

resize(int num,elem); //重新指定容器的长度为num,若容器变长,则以elem数值填充新的位置;若容器变短,则末尾超出的元素被删除


#include <iostream>
#include <vector>
 
using namespace std;
 
void fun_print_vector(std::vector<int>&data)
{
    //std::vector<int>::iterator it; //可以用auto代替。
    for(auto it_data = data.begin();it_data != data.end();it_data++){
        std::cout << *it_data << " " << std::endl;
    }
}
void fun_vector()
{
    vector<int> data1;
    for(int i = 0;i < 6;i++){
        data1.push_back(i);
    }
    fun_print_vector(data1); //打印 0 1 2 3 4 5
 
    if(data1.empty() == true){
        std::cout << "该容器是空" << std::endl;
    }else{
        std::cout << "该容器不是空" << std::endl;
        std::cout << "data1.capacity:" << data1.capacity() << std::endl;
        std::cout << "data1.size:" << data1.size() << std::endl;
    }
    data1.resize(10); //填充默认值0
    fun_print_vector(data1); //打印 0 1 2 3 4 5 0 0 0 0
    data1.resize(13,8); //填充数值8
    fun_print_vector(data1); //打印 0 1 2 3 4 5 0 0 0 0 8 8 8
    data1.resize(4);
    fun_print_vector(data1); //打印 0 1 2 3
}

4. vector的插入和删除函数原型:

push_back(elem); //尾部插入元素elem

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

insert(const_iterator pos, elem); //迭代器指向位置pos插入元素elem

insert(const_iterator pos, int count,elem); //迭代器指向位置pos插入count个元素elem

erase(const_iterator pos); //删除迭代器指向的元素

erase(const_iterator start,const_iterator end); //删除迭代器start到end之间的元素

clear(); //删除容器中所有元素


#include <iostream>
#include <vector>
 
using namespace std;
 
void fun_print_vector(std::vector<int>&data)
{
    //std::vector<int>::iterator it; //可以用auto代替。
    for(auto it_data = data.begin();it_data != data.end();it_data++){
        std::cout << *it_data << " " << std::endl;
    }
}
void fun_vector()
{
    vector<int> data1;
    for(int i = 0;i < 6;i++){
        data1.push_back(i);
    }
    fun_print_vector(data1); //打印 0 1 2 3 4 5
    data1.pop_back(); //尾删
    fun_print_vector(data1); //打印 0 1 2 3 4
    data1.insert(data1.begin(),22); //迭代器位置插入一个22
    fun_print_vector(data1); //打印 22 0 1 2 3 4
    data1.insert(data1.begin(),3,7); //迭代器位置插入三个22
    fun_print_vector(data1); //打印 7 7 7 22 0 1 2 3 4
 
    data1.erase(data1.begin()); //迭代器位置删除
    fun_print_vector(data1); //打印 7 7 22 0 1 2 3 4
    data1.erase(data1.begin(),data1.end()); //迭代器位置 区间 删除
    fun_print_vector(data1); //打印 空
 
    data1.clear(); //清空容器
    fun_print_vector(data1); //打印 空
 
}

5. vector的存取操作函数原型:

at(int idx); //返回索引idx所指的数据

operator []; //返回索引idx所指的数据

front(); //返回容器的第一个数据元素

back(); //返回容器的最后一个数据元素


#include <iostream>
#include <vector>
 
using namespace std;
 
void fun_print_vector(std::vector<int>&data)
{
    //std::vector<int>::iterator it; //可以用auto代替。
    for(auto it_data = data.begin();it_data != data.end();it_data++){
        std::cout << *it_data << " " << std::endl;
    }
}
void fun_vector()
{
    vector<int> data1;
    for(int i = 0;i < 6;i++){
        data1.push_back(i);
    }
 
    //利用[]方式访问vector中的元素
    for(int j = 0;j<data1.size();j++){
        std::cout << data1[j] << " " << std::endl;
    }
    //利用at方式访问vector中的元素
    for(int j = 0;j<data1.size();j++){
        std::cout << data1.at(j) << " " << std::endl;
    }
 
    std::cout << "第一个元素是:" << data1.front() << std::endl;
    std::cout << "最后一个元素是:" << data1.back() << std::endl;
 
}

6. vector的呼唤容器函数原型:

swap(vec); //将vecy与本身 两个容器中的元素互换


#include <iostream>
#include <vector>
 
using namespace std;
 
void fun_print_vector(std::vector<int>&data)
{
    //std::vector<int>::iterator it; //可以用auto代替。
    for(auto it_data = data.begin();it_data != data.end();it_data++){
        std::cout << *it_data << " " << std::endl;
    }
}
void fun_vector()
{
    vector<int> data1;
    for(int i = 0;i < 6;i++){
        data1.push_back(i);
    }
    fun_print_vector(data1); //打印 0 1 2 3 4 5
 
    vector<int> data2;
    for(int i = 6;i > 0;i++){
        data2.push_back(i);
    }
    fun_print_vector(data2); //打印 6 5 4 3 2 1 
 
    data1.swap(data2);
    fun_print_vector(data1); //打印 6 5 4 3 2 1 
    fun_print_vector(data2); //打印 0 1 2 3 4 5 
 
}

总结

到此这篇关于C++入门笔记之std::vector容器的文章就介绍到这了,更多相关C++ std::vector容器内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++入门笔记之std::vector容器详解

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

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

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

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

下载Word文档
猜你喜欢
  • C++入门笔记之std::vector容器详解
    目录前言1. vector的构造函数原型: 2. vector的赋值函数原型:3. vector的容量和大小函数原型:4. vector的插入和删除函数原型:5. vector的存取...
    99+
    2024-04-02
  • C++入门之vector使用详解
    目录前言创建对象迭代器数据插入数据删除容量操作总结前言 兜兜转转,我们来到了C++的vector章节,今天就讲讲怎么使用vector吧. vector的本质就是一个线性的顺序表,只不...
    99+
    2024-04-02
  • C++入门之vector的底层实现详解
    目录前言定义初始结构声明构造函数容量有关操作获取有效数据大小size()获取数据容量capacity()增加容量reserve()重置大小resize()迭代器数据操作尾插push_...
    99+
    2024-04-02
  • Java基础之容器Vector详解
    目录一、前言二、Vector简介三、Vector源码四、总结五、Vector遍历方式一、前言 知识补充:Arrays.copyOf函数: public static int[] ...
    99+
    2024-04-02
  • C语言入门学习笔记之typedef简介
    在单片机和操作系统中 typedef 会经常用到,它可以为某一个类型自定义名称。和#define比较类似。但是又有不同的地方。 typedef 创建的符号只能用于数据类型,...
    99+
    2024-04-02
  • C++Vector容器常用函数接口详解
    目录一、基础框架二、迭代器实现三、size capacity resize reserve四、insert,erase五、pop_back,push_back六、operator[]...
    99+
    2022-11-13
    C++ Vector容器 C++ Vector函数接口
  • C++入门之list的使用详解
    目录前言构造的使用1 构造空list2 构造含n个值为val的元素3 拷贝构造4 用迭代区间迭代器接口1 正常迭代接口2 逆向迭代接口容量接口元素访问数据修改头插头删尾插尾删pos位...
    99+
    2024-04-02
  • C++入门之内存处理详解
    目录前言C/C++内存分布c语言中动态内存管理方式C++内存管理方式new和delete操作基础类型new和delete操作自定义类型基于malloc开辟并初始化的自定义类...
    99+
    2024-04-02
  • C++学习笔记之类与对象详解
    目录前言:1.访问限定符:【问题】C++中 struct和class的区别是什么?2.封装【问题】在类和对象的阶段,我们只研究类的封装特性,那什么是封装呢?3.类的定义与声明【问题】...
    99+
    2024-04-02
  • C++顺序容器(vector、deque、list)的使用详解
    目录一:STL(Standard Template Library),即标准模板库,是一个高效的C++程序库二:STL组件三:容器四:类型成员五:迭代器六:顺序容器七:顺序容器--向...
    99+
    2024-04-02
  • 详解python学习笔记之解释器
    目录1、python教程1.1 概述1.2 python标准库1.3 python语言参考手册1.4 python包索引1.5 术语对照表2、课前甜点3、python解析器3.1 传...
    99+
    2024-04-02
  • JVM入门之JVM内存结构内容详解
    一、java代码编译执行过程 源码编译:通过Java源码编译器将Java代码编译成JVM字节码(.class文件) 类加载:通过ClassLoader及其子类来完成...
    99+
    2024-04-02
  • C语言入门之基础知识详解
    目录一、思维导图二、环境搭建三、编码规范四、基本数据类型五、分支循环5.1 分支5.2 循环六、break与continue6.1 无限循环一、思维导图 内容不限于此思维导图 二、...
    99+
    2024-04-02
  • C++入门语法之函数重载详解
    目录写在前面1 函数重载的概念2 函数重载原理总结写在前面 关于C语言的编译与链接不懂的可以看一下下面的文章,先回顾一下以前的知识。 详解C语言的编译与链接 1 函数重载的概念 函数...
    99+
    2024-04-02
  • 一篇文章带你搞懂spring6的概念、spring入门与容器IoC详解(尚硅谷笔记)
    文章目录 1、概述1.1、Spring是什么?1.2、Spring 的狭义和广义1.3、Spring Framework特点1.4、Spring模块组成1.5、Spring6特点1.5.1、版...
    99+
    2023-09-25
    spring java spring boot
  • 详解C++ STL vector容器访问元素的几种方式
    学会如何创建并初始化 vector 容器之后,本节继续来学习如何获取(甚至修改)容器中存储的元素。 访问vector容器中单个元素 首先,vector 容器可以向普通数组那样访问...
    99+
    2024-04-02
  • Java学习笔记必备:Linux容器知识详解
    随着Java技术的不断发展,越来越多的开发者开始使用Java进行应用程序的开发。在Java的学习过程中,了解Linux容器知识是非常重要的。本文将详细介绍Linux容器的相关知识,并提供一些演示代码供参考。 一、什么是Linux容器? L...
    99+
    2023-11-07
    学习笔记 linux 容器
  • stl容器set,map,vector之erase用法与返回值详细解析
    总结本人在工作中经验教训。 在使用 list、set 或 map遍历删除某些元素时可以这样使用: 正确使用方法1复制代码 代码如下:    &...
    99+
    2022-11-15
    stl vector erase
  • C++入门教程之内联函数与extern "C"详解
    目录一.   内联函数1.概念及分析2.特性3.宏二.   extern “C”1.C++程序2.C程序 总...
    99+
    2023-01-10
    c++内联函数是什么 c++  extern c c++内联函数使用
  • 自然语言处理学习笔记必备:Python 容器详解
    自然语言处理(NLP)是计算机科学和人工智能领域中的一个重要分支,它的目标是让计算机能够理解和处理自然语言。Python 是一种广泛使用的编程语言,它在自然语言处理中有着广泛的应用。在 Python 中,容器是一种非常重要的数据类型,它们可...
    99+
    2023-08-11
    容器 自然语言处理 学习笔记
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作