vector

vector

一,初始化

二,相关函数

1.front() 功能:返回首元素的引用
输出:1
2.back() 功能:返回尾元素为元素
输出:0;
3.插入元素
  • push_back(elem) -- 在容器尾端插入elem
  • iterator insert(pos,elem) -- 在迭代器pos指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器
  • iterator insert(pos,n,elem) -- 在迭代器pos指定的位置之前插入n个元素elem,并返回表示第一个新插入元素位置的迭代器
  • iterator insert(pos,first,last) -- 在迭代器pos指定的位置之前,插入其他容器(不仅限于vector)中位于[first,last)区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
  • interator insert(pos, initlist) -- 在迭代器pos指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间用逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
例:#include <iostream>
#include <vector>
#include <array>
using namespace std;
int main()
{
    std::vector<int> demo{1,2};
    //第一种格式用法
    demo.insert(demo.begin() + 1, 3);//{1,3,2}
    //第二种格式用法
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
    //第三种格式用法
    std::array<int,3>test{ 7,8,9 };
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
    //第四种格式用法
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
    for (int i = 0; i < demo.size(); i++) {
        cout << demo[i] << " ";
    }
    return 0;
}
4,删除元素
  • pop_back() -- 删除vector容器中最后一个元素,该容器的大小(size)会减一,但容量(capacity)不会发生改变
  • erase(pos)-- 删除vector容器中pos迭代器指定位置的元素,并返回指向被删除元素下一个位置元素的迭代器。该容器的大小(size)会减一,但容量(capacity)不会发生改变。
  • swap(a,b)、pop_back() -- 先调用swap()(swap()没有返回值)函数交换删除的目标元素和容器最后一个元素,然后使用pop_back()删除该目标元素。
  • erase(beg,end) -- 删除vector位于迭代器[beg,end)指定区域内的所有元素,并返回指向被删除区域下一个元素位置的迭代器。该容器的大小(size)会减小,但容量(capacity)不会发生改变。
  • remove() -- 删除容器中所有和指定元素值相等的元素,并返回指向最后一个元素下一个位置的迭代器。值得一提的是,调用该函数不会改变容器的大小和容量。--remove(v.begin(),v.end(),1);
  • clear() -- 删除vector容器中所有的元素,使其变为空的vector容器,该函数会改变vector的大小(变为0),但不是改变其容量。
例:
#include <vector>
#include <iostream>
using namespace std;
int main()
{
    vector<int>demo{ 1,2,3,4,5 };
    demo.pop_back();
    //输出 dmeo 容器新的size
    cout << "size is :" << demo.size() << endl;
    //输出 demo 容器新的容量
    cout << "capacity is :" << demo.capacity() << endl;
    for (int i = 0; i < demo.size(); i++) {
        cout << demo[i] << " ";
    }
    return 0;
}
size is :4
capacity is :5
1 2 3 4
#include <vector>
#include <iostream>
using namespace std;
int main()
{
    vector<int>demo{ 1,2,3,4,5 };
    auto iter = demo.erase(demo.begin() + 1);//删除元素 2
    //输出 dmeo 容器新的size
    cout << "size is :" << demo.size() << endl;
    //输出 demo 容器新的容量
    cout << "capacity is :" << demo.capacity() << endl;
    for (int i = 0; i < demo.size(); i++) {
        cout << demo[i] << " ";
    }
    //iter迭代器指向元素 3
    cout << endl << *iter << endl;
    return 0;
}
size is :4
capacity is :5
1 3 4 5
3
vector中的find()
  •  find函数主要实现的是在容器内查找指定的元素,并且这个元素必须是 基本数据类型 的。 查找成功返回一个指向指定元素的迭代器,查找失败返回 end迭代器

c++使用vector创建二维数组的方法

//使用vector一次性完成二维数组的定义(注意:此种方法适用于每一行的列数相等的二维数组)
vector<vector<int>> matrix(m, vector<int>(n, -1));
//以下是拆分理解
//创建一维数组matirx,这个数组里有m个元素,元素是int型vector。
vector<vector<int>> matrix(m);
//除了定义数组类型及数组大小外,同时给数组中的元素赋值:将元素赋值为大小为n的int型vector。
vector<vector<int>> matrix(m, vector<int>(n));
//除了定义数组类型、数组大小、列的大小,同时给数组列中的元素(或者说,数组中的所有元素)赋值为-1。
vector<vector<int>> matrix(m, vector<int>(n, -1));
//比较具有普遍性的写法(注意:此种方法适用于每一行的列数相等的二维数组)
vector<vector<int>> matrix;//创建一维数组matirx,这个数组里的元素是int型vector。
int m = 3; //matrix有m行
int n = 10; //matrix有n列
int value = 1; //最终matrix成为二维数组后,其中每个元素的值为1(如果不需要进行初始化,此语句可以省略)
for (int i = 0; i < m; ++ i) {
    vector<int> tmp(n, value); //定义int型一维数组tmp,该数组有n个int型元素,且每个元素的初始值为value
    matrix.push_back(tmp); //将一维数组tmp(小容器)加入matrix(大容器)中,使之成为matrix的元素,令matrix成为二维数组
}
//如果需要每一行的列数不同(虽然一般很少这样做),也可以使用下面这种写法进行定义、初始化
vector<vector<int>> matrix;
vector<int> a(10, 1); //单独定义每个小容器的元素个数和元素初始值
vector<int> b(5, 2);
vector<int> c(10, 3);
matrix.push_back(a); //将每个小容器加入matrix(大容器)中
matrix.push_back(b);
matrix.push_back(c);
对vector中的元素去取地址
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值