vector容器介绍

vector容器介绍

功能与数组类似,可以形成一个自定义序列。

区别:
数组是静态的长度不可更改,而vector可以动态扩展,增加长度。

数组的内存通常存储在栈上,而vector的内存存放在堆上。

拓展 动态扩展不是在原空间后增加新空间,而是找一个更大的空间,拷贝数据,释放元空间

使用说明:

  • 包含头文件

要在C++中使用 vector,首先需要包含 <vector> 头文件:

#include <vector>
  • 创建和初始化

可以通过多种方式来创建和初始化 vector

1. 创建空的 vector
std::vector<int> vec;
2. 创建并初始化为特定大小:
std::vector<int> vec(5); // 创建包含5个元素的vector,初始值为0
3. 初始化为特定值:
std::vector<int> vec = {1, 2, 3, 4, 5};
4.vector的构造函数(在定义时直接初始化时运用)
vector<T> v;//使用模版类,默认的构造函数
vector<v.begain(),v.end()>;//将[v.begain(),v.end()]区间的元素拷贝给本身
vector<n,elem>;//将n个elem拷贝给本身
vector(const vector &v)//拷贝构造函数
**实例 **
void text(){
	vector<int> v1;//默认调用模版
    for(int i=0;i<5;i++)v1.push_back(i);//在v1末尾添加i
    vector<int> v2(v1.begin(),v1.end());//调用项2来声明  //0 1 2 3 4 
    vector<int> v3(5,5);//调用3,拷贝5个5进入vector容器中  //5 5 5 5 5
    vector<int> v4(v3)//调用项4,运用拷贝函数  //5 5 5 5 5 
}

vector的赋值操作(定义好后再进行的赋值操作)

  • 函数原型:
1.vector& operator= (const vector &v); //重载赋值运算符
2.assign(v.begin,v.end());//[v.begain(),v.end()]区间的元素拷贝给本身
6.assign(n,elem);//将n个elem赋值个容器
实例
void text2{
    vector<int> v1,v2;
    for(int i=0;i<5;i++)v1.push_back(i);
	v2=v1;//调用1,赋值运算符 //0 1 2 3 4
    vector<int> v3,v4;
    v3.assign(v1.begin(),v1.end());//调用2 // 0 1 2 3 4 
    v4.assign(5,9); //调用3 // 9 9 9 9 9 
}

vector容量与大小

函数方法
1.empty():判断容器是否为空,是返回1,否返回0;
2.capacity();:返回容器容量;
3.size();返回容器大小,即容器中元素的个数
4.resize(int num[,int elem]);重新指定容器的长度,若容器变长则默认填写0,有elem参数,填elem。若容器变短,则超出部分自动删去
void text3{
    vector<int>v1;
    if(v1.empty()){//判断容器是否为空
        for(int i=0;i<5;i++)v1.push_back(i);
    }
    cout<<v1.capacity()<<endl;//调用2项,返回容器的长度;
    cout<<v1.size()<<endl;//调用3项,返回容器的大小;
    v1.resize(10);//增加长度,超出默认为0;//0 1 2 3 4 0 0 0 0 0
    v1.resize(15,9);//增加长度,超出部分赋值9;//0 1 2 3 4 0 0 0 0 0 9 9 9 9 9
    v1.resize(10);//缩短长度//0 1 2 3 4 0 0 0 0 0
    v1.resize(5,9);//长度缩小时与elem无关//0 1 2 3 4
    
}

常见操作

添加元素

使用 push_back 方法可以向 vector 尾部添加元素:

vec.push_back(6); // 添加元素6到vector的末尾

使用 insert(const_iterator pos[,int count],ele) 方法可以向 vector 的pos位置插入count个(默认为1个)ele元素:

vec.insert(v1.begin(),20);//在vector的首位置插入一个20
vec.insert(v1.begin(),5,20);//在vector的首位置插入五个20
访问元素

可以使用下标操作符 [] 或者 at() 方法访问 vector 中的元素:

int x = vec[2]; // 访问第3个元素(索引为2)
int y = vec.at(0); // 访问第1个元素

使用 front() 返回容器中的第一个元素

cout<<vec.front();//输出容器内第一个元素

使用 back() 返回容器中的最后一个元素

count<<vec.back();//输出容器中最后一个元素
删除元素

使用 pop_back 方法可以删除 vector 的最后一个元素:

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

使用 erase(const_iterator pos) 方法可以删除 vector 的pos位置的元素:

vec.erase(v1.begin());//删除首个元素

使用 erase(const_iterator begin,const_iterator end); 方法可以删除 vector 中begin和end之间的元素:

vec.erase(v1.begin(),v2.end());//删除开始到尾的元素,即删去所有元素

使用 clear 方法可以删除 vector 的所有元素:

vec.clear();//删除所有元素
容器互换

使用swep(v);//容器v如当前容器互换。

void text4{
	vector<int> v1,v2;
    for(int i=0,i<5;i++){
        v1.push_back(i);v2.push_back(4-i);
    }
    v1.swep(v2);//两个容器交换//v1:4 3 2 1 0 //v2:0 1 2 3 4
}
实际作用:收缩内存,减少容量

resize()可以缩小容器大小,不能减少容量;

vector<int>(v).swep(v);//创建一个虚拟对象拷贝v内的数据,从而减少容器的容量
vector预留空间
  • 作用:减少容器动态扩容的次数

reserve(int len);//容器内预留len个元素长度,预留的位置并不初始化,不可访问

ves.reserves(10000);//给ves预留空间,后面在添加元素使就可以减少扩容次数
遍历 vector

可以使用迭代器或者范围循环来遍历 vector 中的所有元素:

// 使用迭代器
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " ";
}
std::cout << std::endl;

// 使用范围循环(C++11及以后版本支持)
for (int num : vec) {
    std::cout << num << " ";
}
std::cout << std::endl;

结尾

这些是 vector 在C++中的一些基本用法,它提供了高效的动态数组功能,非常适合需要动态增长和访问元素的场景。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中的vector是一个动态数组,可以根据需要随时调整大小。它是标准库中最常用的容器之一,提供了许多方便的成员函数和操作符重载。 使用vector容器需要包含头文件`<vector>`。 下面是一些vector容器的特点和常用操作: 1. 动态大小:vector可以根据需要动态调整大小,可以在任意位置插入或删除元素。 2. 快速随机访问:vector支持通过索引快速访问元素,时间复杂度为O(1)。 3. 连续存储:vector的元素在内存中是连续存储的,这样可以提高访问效率。 4. 自动内存管理:vector会自动管理内部的动态内存分配和释放,无需手动管理。 5. 范围检查:vector会在访问操作时进行边界检查,确保不越界。 以下是一些常用的vector操作: - `push_back(value)`:在vector末尾添加一个元素。 - `pop_back()`:删除vector末尾的元素。 - `size()`:返回vector中元素的个数。 - `empty()`:判断vector是否为空。 - `clear()`:清空vector中的所有元素。 - `at(index)`:返回指定索引位置的元素,并进行范围检查。 - `front()`:返回第一个元素。 - `back()`:返回最后一个元素。 - `insert(iterator, value)`:在指定位置插入一个元素。 - `erase(iterator)`:删除指定位置的元素。 - `begin()`和`end()`:返回指向vector第一个元素和最后一个元素之后的迭代器,用于循环遍历。 vector容器提供了丰富的功能,并且易于使用,适合在需要动态大小和快速访问的情况下使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值