C++中的vector的详细用法

这篇具有很好参考价值的文章主要介绍了C++中的vector的详细用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

C++中的vector的详细用法

一、vector的介绍

二、存储类型

三、函数

四、vector二维数组两种方法

五、vector中find()用法

六、vector的访问

七、vector中insert()函数增加元素操作

八、vector中erase()函数删除元素操作


一、vector的介绍

头文件:#include < vector >

向量(Vector)是一个封装了动态大小数组的顺序容器。

跟任意其它类型容器一样,它能够存放各种类型的对象。

可以简单的认为,向量是一个能够存放任意类型的动态数组。

二、存储类型

vector<类型>标识符
vector<类型>标识符(最大容量)
vector<类型>标识符(最大容量,初始所有值)
 
int i[5]={1,2,3,4,5}
vector<类型>vi(i,i+2);//得到i索引值为3以后的值
 
vector<vector<int>>v; 二维向量//这里最外的<>要有空格。否则在比较旧的编译器下无法通过

 文章来源地址https://www.toymoban.com/news/detail-735148.html

三、函数

push_back()  //在数组的最后添加一个数据
 
pop_back() //去掉数组的最后一个数据

at()  //得到编号位置的数据

begin() //得到数组头的指针

end() //得到数组的最后一个单元+1的指针
  
find()  //判断元素是否存在

front() //得到数组头的引用

back() //得到数组的最后一个单元的引用

max_size() //得到vector最大可以是多大

capacity() //当前vector分配的大小

size() //当前使用数据的大小

capacity(); //返回a在内存中总共可以容纳的元素个数

a.reserve(100); //改变当前vecotr所分配空间的大小将a的容量(capacity)扩充至100,也就是说现在测试a.capacity();的时候返回值是100

a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,增加的元素其值默认为0

a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,增加的元素其值为2

erase() //删除指针指向的数据项

clear() //清空当前的vector

rbegin() //将vector反转后的开始指针返回(其实就是原来的end-1)

rend() //将vector反转构的结束指针返回(其实就是原来的begin-1)

empty() //判断vector是否为空

swap() //与另一个vector交换数据
a.swap(b); //b为向量,将a中的元素和b中的元素进行整体性交换

reverse(obj.begin(),obj.end());反向迭代器,实现元素对调

 

四、vector二维数组两种方法

第一种:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int N=5, M=6;
    vector<vector<int>> obj(N); //定义二维动态数组大小5行
    for(int i =0; i< obj.size(); i++)//动态二维数组为5行6列,值全为0
    {
        obj[i].resize(M);
    }
 
    for(int i=0; i< obj.size(); i++)//输出二维动态数组
    {
        for(int j=0;j<obj[i].size();j++)
        {
            cout<<obj[i][j]<<" ";
        }
        cout<<"\n";
    }
    return 0;
}

 第二种:

#include <bits/stdc++.h>
 using namespace std;
 int main()
 {
     int N=5, M=6;
     vector<vector<int> > obj(N, vector<int>(M)); //定义二维动态数组5行6列
  
     for(int i=0; i< obj.size(); i++)//输出二维动态数组
     {
         for(int j=0;j<obj[i].size();j++)
         {
             cout<<obj[i][j]<<" ";
         }
         cout<<"\n";
     }
     return 0;
 }

 

五、vector中find()用法

find(数组的头地址, 数组的尾地址, 要找的数)
 
find(nums.begin(), nums.end(), target)

//返回的是target第一次出现的地址
//如果没有找到返回尾地址nums.end()
代码: 
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
using std::vector;
using std::cout;
using std::endl;
int main() {
    vector<int> nums = {2,7,8,8,9};
    int target = 8;
    vector<int>::iterator loc = find(nums.begin(), nums.end(), target);

    if (loc == nums.end()) {
        cout << "数组中没有" << target << endl;
    }
    else {
        cout << "数组中有" << target << endl;
        cout << "并且, 它的第一次出现的位置为:" << loc - nums.begin() << endl;
    }
}

 

 

六、vector的访问

#include <bits/stdc++.h>
using namespace std;
int main()
{
    //顺序访问
    vector<int>obj;
    for(int i=0;i<10;i++)
    {
        obj.push_back(i);//存储数据
    }
    
    //方法一数组访问
    cout<<"直接利用数组:";
    for(int i=0;i<10;i++)
    {
        cout<<obj[i]<<" ";
    }
    cout<<endl;
    
  
    //方法二,使用迭代器将容器中数据输出
    cout<<"利用迭代器:" ;
    vector<int>::iterator it;
    //声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素
    for(it=obj.begin();it!=obj.end();it++)
    {
        cout<<*it<<" ";
    }
  
    return 0;
}

 

七、vector中insert()函数增加元素操作

使用push_back()方式

push_back()  //往vector末尾插入一个元素

//使用push_back()方式
vector<int> vA;
vA.push_back(1); //vA中push一个1  (vA={1})  

使用insert()方式插入元素 

insert()  //往vector任意位置插入一个元素,指定位置或者指定区间进行插入,
 //第一个参数是个迭代器,第二个参数是元素。返回值是指向新元素的迭代器

vector<int> vA;
vector<int>::iterator it;

//指定位置插入
//iterator insert(const_iterator _Where, const _Ty& _Val)
//第一个参数是个迭代器位置,第二个参数是元素
it = vA.insert(vA.begin(),2); //往begin()之前插入一个int元素2 (vA={2,1}) 此时*it=2

  
//指定位置插入
//void insert(const_iterator _Where, size_type _Count, const _Ty& _Val) 
//第一个参数是个迭代器位置,第二个参数是要插入的元素个数,第三个参数是元素值
it = vA.insert(vA.end(),2,3);//往end()之前插入2个int元素3 (vA={2,1,3,3}) 此时*it=3


//指定区间插入
//void insert(const_iterator _Where, _Iter _First, _Iter _Last) 
vector<int> vB(3,6);  //vector<类型>标识符(最大容量,初始所有值)
it = vA.insert(vA.end(),vB.begin(),vB.end()); //把vB中所有元素插入到vA的end()之前 (vA={2,1,3,3,6,6,6})
//此时*it=6,指向最后一个元素值为6的元素位置



//删除元素操作:
 
pop_back()  从vector末尾删除一个元素

erase()  从vector任意位置删除一个元素,指定位置或者指定区间进行删除,第一个参数都是个迭代器。返回值是指向删除后的下一个元素的迭代器

 clear()   清除vector中所有元素, size=0, 不会改变原有capacity值

 

 

八、vector中erase()函数删除元素操作

pop_back()  //从vector末尾删除一个元素
  
erase()  //从vector任意位置删除一个元素
//指定位置或者指定区间进行删除,第一个参数都是个迭代器。 方法与insert()相同
//返回值是指向删除后的下一个元素的迭代器
  
  
clear()   //清除vector中所有元素, size=0, 不会改变原有capacity值

代码示例:

#include <string.h>
#include <vector>
#include <iostream>
using namespace std;
 
int main()
{
    vector<int>obj;//创建一个向量存储容器 int
    for(int i=0;i<10;i++) // push_back(elem)在数组最后添加数据
    {
        obj.push_back(i);
        cout<<obj[i]<<",";
    }
 
    for(int i=0;i<5;i++)//去掉数组最后一个数据
        obj.pop_back();

    cout<<"\n"<<endl;
 
    for(int i=0;i<obj.size();i++)//size()容器中实际数据个数
        cout<<obj[i]<<",";
    
    
    /*
     分为升序和降序两排序方式:

     vector<int>v;
      
     sort(v.begin(), v.end(),less<int>());//升序
      
     sort(v.begin(), v.end(),greater<int>());//降序
     */
 
    //sort(obj.begin(),obj.end());//从小到大
    //reverse(obj.begin(),obj.end());反向迭代器,实现元素对调
    //obj.clear();//清除容器中所以数据
    
    return 0;
}

 

 

 

到了这里,关于C++中的vector的详细用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++中的vector容器

      vector是封装动态数组的顺序容器。   就像数组一样,vector也采用的连续存储空间来存储元素。这也就意味着我们可以通过下标来获取vector的元素,和数组一样高效。但是又不像数组,vector的大小是可以动态改变的,且它的大小会被容器自动处理。   本质上,vector使

    2023年04月24日
    浏览(39)
  • C++中的Vector类详解

    本文详细介绍了C++中vector类的使用方法,包括其定义、迭代器的使用、空间函数、扩容问题以及增删查改操作,旨在帮助读者更好地理解和使用vector。

    2024年02月05日
    浏览(40)
  • C++关于vector的详细介绍

    vector底层本质就是一个顺序表,它是一个可变长的数组,采用连续存储的空间来存储数据,它的元素类型也可以是任意的内置类型或者自定义类型。 第一种方式: 定义一个任意类型的空vector 第二种方式: 定义一个任意类型的vector,并用n个val来初始化vector 第三种方式: 定义

    2024年02月06日
    浏览(29)
  • C++中的vector类模拟实现

    目录 vector模拟实现 vector类设计 vector类构造函数 vector类根据个数构造函数 vector类根据迭代器区间构造函数 vector类拷贝构造函数 vector类赋值运算符重载函数 vector类析构函数 vector类获取有效数据个数函数 vector类获取容量大小函数 vector类begin()函数 vector类end()函数 vector类reser

    2024年04月13日
    浏览(27)
  • c++算法——vector

            vector 是标准模板库的一个容器,直接翻译为“向量”,一般来成“可变长数组”,也即“长度会根据需要而变化的数组”。在竞赛中有些题目需要很大的很大的数组,而有些还用不上就需要用到 vector 。         使用 vector 首先要加#include vector,当然万能头也

    2023年04月24日
    浏览(33)
  • 【C++】:C++中的STL序列式容器vector源码剖析

    vector定于与stl_vector.h头文件中 例如: vector的数据结构非常简单:一个线性连续空间 下面介绍vector的3个数据结构: start:表示目前使用空间的头 finish:表示目前使用空间的尾 end_of_storage:表示目前可用空间的尾 说明:为了降低空间配置时的速度成本,vector实际配置的大小可

    2024年01月22日
    浏览(36)
  • [开发语言][python][c++]:C++中的this指针和Python中的Self -- 26岁生日

    以朋友的新岁祝福开篇,祝笔者也祝大家☺️: 之前一直对 C++ 中的 this 和 python 中的 self 到底是什么关系,为什么 C++ 要显式的写出来,python 则不需要? 模糊不清,趁着周末整理一下相关结论,希望本篇文章可以解答这些问题,同时对C++和Python中的类加深些理解。 python 当

    2024年01月24日
    浏览(53)
  • 【C++】 vector <string> 的超详细解析!!!

    目录 一、前言 二、 vector string  的个人理解和总结 三、vector string  的初始化 四、vector string 的输入 输出  五、vector string  中的注意事项  六、常考面试题 七、共勉          在【C++】中, vector   是一个 动态数组 ,它可以根据需要自动调整自身的大小。同样 vectorstri

    2024年04月22日
    浏览(24)
  • [开发语言][c++][python]:C++与Python中的赋值、浅拷贝与深拷贝

    写在前面 :Python和C++中的赋值与深浅拷贝,由于其各自语言特性的问题,在概念和实现上稍微有点差异,本文将这C++和Python中的拷贝与赋值放到一起,希望通过对比学习两语言实现上的异同点,加深对概念的理解。 C++中所谓的 浅拷贝 就是由(系统默认的) 拷贝构造函数对

    2024年02月02日
    浏览(38)
  • C++中的vector使用详解及重要部分底层实现

           本篇文章会对vector的语法使用进行详解。同时,还会对重要难点部分的底层实现进行讲解。其中有vector的 迭代器失效 和 深拷贝 问题。希望本篇文章的内容会对你有所帮助。 目录 一、vector 简单概述 1、1 C语言中数组的不便 1、2 C++中的动态数组容器vector  二、vector的

    2024年02月12日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包