C++ vector总结

举报
AI浩 发表于 2021/12/23 01:51:52 2021/12/23
【摘要】 目录 介绍 常用函数 函数实例 1、初始化vector 2、遍历 3、修改元素的值 4、删除元素 5、排序 介绍 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。 ...

目录

介绍

常用函数

函数实例

1、初始化vector

2、遍历

3、修改元素的值

4、删除元素

5、排序


介绍

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

vector 容器中,根据下标随机访问某个元素的时间是常数,在尾部添加一个元素的时间大多数情况下也是常数,总体来说速度很快。

在中间插入或删除元素时,因为要移动多个元素,因此速度较慢,平均花费的时间和容器中的元素个数成正比。

常用函数

 

成员函数

作 用

vector()

无参构造函数,将容器初始化为空

vector(int n)

将容器初始化为有 n 个元素

vector(int n, const T & val)

假定元素的类型是 T,此构造函数将容器初始化为有 n 个元素,每 个元素的值都是 val

vector(iterator first, iterator last)

first 和 last 可以是其他容器的迭代器。一般来说,本构造函数初始化的结果就是将 vector 容器的内容变成与其他容器上的区间 [first, last) —致

void assign(int n,const T& x)

设置向量中第n个元素的值为x

void clear()

删除所有元素

bool empty()

判断容器是否为空

void pop_back()

删除容器末尾的元素

void push_back( const T & val)

将 val 添加到容器末尾

int size()

返回容器中元素的个数

Int capacity()

当前vector分配的大小

reference at(int pos)

返回pos位置元素的引用

T & front()

返回容器中第一个元素的引用

T & back()

返回容器中最后一个元素的引用

iterator begin()

返回向量头指针,指向第一个元素

iterator end()

返回向量尾指针,指向向量最后一个元素的下一个位置

reverse_iterator rbegin()

反向迭代器,指向最后一个元素

reverse_iterator rend()

反向迭代器,指向第一个元素之前的位置

iterator insert(iterator i, const T & val)

将 val 插入迭代器 i 指向的位置,返回 i

iterator insert( iterator i, iterator first, iterator last)

将其他容器上的区间 [first, last) 中的元素插入迭代器 i 指向的位置

iterator erase(iterator i)

删除迭代器 i 指向的元素,返回值是被删元素后面的元素的迭代器

iterator erase(iterator first, iterator last)

删除容器中的区间 [first, last)

void swap( vector <T> & v)

将容器自身的内容和另一个同类型的容器 v 互换

函数实例

1、初始化vector

    (1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。

   2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1

   3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值

   4)vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素

   5int b[7]={1,2,3,4,5,9,8};

        vector<int> a(b,b+7); //从数组中获得初值

2、遍历

#include <string>

#include <cctype>

using namespace std;

int main() {

    vector<int> myVector(10, 22);

    //通过下角标遍历。

    for (auto i = 0; i < myVector.size(); i++)

    {

        cout << " " << myVector[i];

    }

    cout << "\n";

    myVector.push_back(44);

    //通过迭代器遍历

    for (auto i = myVector.begin(); i != myVector.end(); i++)

    {

        cout << " " << *i;

    }

    cout << "\n";

    return 0;

}

3、修改元素的值

// list::sort

#include <iostream>

#include <vector>

#include <string>

#include <cctype>

using namespace std;

int main() {

    vector<int> myVector(10, 22);

    //通过下角标遍历。

    for (auto i = 0; i < myVector.size(); i++)

    {

         myVector[i]=55;

    }

    cout << "\n";

    //通过下角标遍历。

    for (auto i = 0; i < myVector.size(); i++)

    {

        cout << " " << myVector[i];

    }

    cout << "\n";

    myVector.push_back(44);

    //通过迭代器遍历修改元素的值。

    for (auto i = myVector.begin(); i != myVector.end(); i++)

    {

        if (*i == 55)

        {

            *i = 33;

        }

    }

    cout << "\n";

    for (auto i = myVector.begin(); i != myVector.end(); i++)

    {

        cout << " " << *i;

    }

    return 0;

}

4、删除元素

#include <iostream>

#include <vector>

#include <string>

#include <cctype>

using namespace std;

 

 

int main() {

    vector<int> myVector = {1,2,3,4,5,6,7,8,9,11};

    //通过下角标删除。

    for (auto i = 0; i < myVector.size(); i++)

    {

        if (i == 4)

        {

            myVector.erase(myVector.begin()+4);

        }

    }

    cout << "\n";

    //通过迭代器遍历删除。

    for (auto i = myVector.begin(); i != myVector.end();)

    {

        if (*i == 7)

        {

            i=myVector.erase(i);

        }

        else

        {

            i++;

        }

    }

    cout << "\n";

    for (auto i = myVector.begin(); i != myVector.end();i++)

    {

        cout << " " << *i;

    }

    cout << "\n";

    return 0;

}

5、排序

// list::sort

#include <iostream>

#include <vector>

#include <algorithm>

using namespace std;

bool compar(int a, int b)

{

    return a > b;

}

int main() {

    vector<int> myVector = { 1,2,4,3,5,6,7,8,9,11 };

    sort(myVector.begin(), myVector.end());

    for (auto i = myVector.begin(); i != myVector.end(); i++)

    {

        cout << " " << *i;

    }

    cout << "\n";

    sort(myVector.begin(), myVector.end(),compar);

    for (auto i = myVector.begin(); i != myVector.end(); i++)

    {

        cout << " " << *i;

    }

    cout << "\n";

    return 0;

}

 

文章来源: wanghao.blog.csdn.net,作者:AI浩,版权归原作者所有,如需转载,请联系作者。

原文链接:wanghao.blog.csdn.net/article/details/107760009

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。