C++ STL之Vector容器

打印 上一主题 下一主题

主题 510|帖子 510|积分 1530

概述:

Vecotor是一个动态容器,支持随时插入和删除操作。在内存中是一连存储的,因此访问迅速。并且可以存储多种数据类型:int、指针、对象…
1. 包罗的头文件

  1. #include <vector>
复制代码
2. 初始化

常见的初始化方式包括一维数组和二维数组
(1)一维数组:
  1. vector<int> a;
  2. vector<string*> b;
  3. vector<Base*> c;
  4. vector<int> v(n);//长度为n的数组,初始值默认为0,idx=[0, n-1]
  5. vector<int> v(n, 1);//v[0]到v[n-1]所有的元素初始值均为1
  6. vector<int> a{1, 2, 3, 4, 5};//数组a中有五个元素,数组长度就为5
复制代码
(2)二维数组:
  1. vector<vector<int>>v;
复制代码
3. 常用接口

成员函数释义v.push_back(i)在尾部加一个数据,O(1)v.pop_back()删除末了一个数据,O(1)v.size()返回实际数据个数(unsigned类型),O(1)v.begin()返回首元素的迭代器(普通来说就是地址)O(1)v.end()返回末了一个元素后一个位置的迭代器(地址)O(1)v.empty()判断是否为空,为空返回真,反之返回假 O(1)v.fornt()返回第一个数据,O(1)v.back()返回数组中的末了一个数据 ,O(1)v.clear()清除元素个数,O(N)v.resize(n,i)改变数组巨细为n,n个空间数值赋为i,如果没有默认赋值为0v.insert(it, x)向任意迭代器it插入一个元素x ,O(N)v.erase(first,last)删除[first,last)的所有元素,O(N) 4. 迭代访问

4.1 一维数组

(1)下标法:和平凡数组一样,一维数组的下标是从0到v.size()−1,访问之外的数会出现越界错误
  1. #include <iostream>#include <vector>
  2. using namespace std;int main(){    vector<int> v;    for(int i = 0; i < 10; i++){        v.push_back(i);    }    for(int i = 0; i < 10; i++){        cout << v[i] << " ";    }    return 0;}/*output:0 1 2 3 4 5 6 7 8 9 */
复制代码
(2)迭代器法:雷同指针一样的访问,起首需要声明迭代器变量,和声明指针变量一样
  1. #include <iostream>#include <vector>
  2. using namespace std;int main(){    //迭代器,雷同于指针    vector<int> v1{ 1,2,3,4,5,6,7,8,9,0};    vector<int>::iterator it;//声明了一个迭代器类型的变量it,雷同于指针变量    for (it = v1.begin(); it != v1.end(); it++) {            cout << *it << " ";            //cout << *(it+1) << " ";  v[i] 和 *(v.begin() + i) 等价    }    //智能指针auto    for (auto num : v1) {            cout << num << " ";    }    return 0;}/*output:1 2 3 4 5 6 7 8 9 01 2 3 4 5 6 7 8 9 0*/
复制代码
4.2 二维数组

  1. #include <iostream>#include <vector>
  2. using namespace std;int main(){    vector<vector<int>>v;
  3.     vector<int> v1{ 1,2,3,4 };     vector<int> v2{ 5,6,7,8 };    v.push_back(v1);     v.push_back(v2);    v.push_back({ 10,11,12,13 });    for (int i = 0; i < v.size(); i++) {            for (int j = 0; j < v[0].size(); j++) {                    cout << v[i][j] << " ";        }            cout << endl;    }    return 0;}/*output:1 2 3 4 5 6 7 8 10 11 12 13 */
复制代码
参考:
https://wyqz.top/p/870124582.html
https://www.runoob.com/cplusplus/cpp-vector.html

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表