[C++STL] vector 容器的入门

vector容器的入门

#include<vector>

创建vector容器的几种方式

  1. 数据类型可以是结构体,也能是另外一个容器

  2. vector 的初始化:

(1) 创建并声明大小
    vector<数据类型>name(size);//size大小
(2) 声明大小,并且附上初始值。
    vector<数据类型>v (size,value);//size大小 value每个元素的初始值(都可以用变量表示)
(3) 创建时,声明初始值(类比数组)
    -> vector<int> name {1,3,5,7};
    -> vector<int> name1(name2.begin(),name2.begin+3);//定义了name1值为name2中第0个到第2个(共3个)元素
    -> int b[7]={1,2,3,4,5,9,8}; 
        vector<int> name(b,b+7); //从数组中获得初值
  1. 二维数组:

vector<?>v;

声明10*5固定大小的二维数组并且都赋值为1
vector< vector<int> > v4(10, vector<int>(5,1));

遍历二维数组
for (int i = 0; i < v4.size(); i++) {
    //v4[i]是长度为5的数组
    for (int j = 0; j < v4[i].size(); j++) {
        cout << v4[i][j];//vector可以使用迭代器访问或下标访问(输出)
    }
    cout << endl;
}

顺序访问vector的几种方式:

  1.  在向量a中添加元素

(1) 简单
vector<int> a;
for(int i=0;i<10;i++)
    a.push_back(i);
 
(2) 从数组中选择元素向向量中添加
int a[6]={1,2,3,4,5,6};
vector<int> b;
for(int i=1;i<=4;i++)
b.push_back(a[i]);
​
(3) 从现有向量中选择元素向向量中添加
int a[6]={1,2,3,4,5,6};
vector<int> b;
vector<int> c(a,a+4);
for(vector<int>::iterator it=c.begin();it<c.end();it++)
    b.push_back(*it);//迭代器访问
​
(4) 从文件中读取元素向向量中添加
ifstream in("data.txt");
vector<int> a;
for(int i; in>>i)
    a.push_back(i);
​
(5) 【误区】
vector<int> a;
for(int i=0;i<10;i++)
    a[i]=i;//下标只能用于获取已存在的元素,不能用于赋值。
————————————————————————————————
原文链接:https://blog.csdn.net/qq_42188312/article/details/102450665

成员函数

函数作用
back() 返回最后一个元素的引用
front() 返回第一个元素的引用
begin() 返回第一个元素的迭代器
end() 返回最后一个元素的后一个位置的迭代器
empty() 判断a是否为空,空则返回ture,不空则返回false
push_back(元素) 在序列尾部添加一个元素
pop_back() 移出序列尾部的元素。
emplace_back() vector 容器的尾部添加一个元素。(c++11才有)
erase(迭代器) 移除一个一段元素。一段元素的话区间为 [a,b)
clear() 移除所有元素,容器大小为0。
resize() 重新改变容器的容量
size() 返回实际元素的个数
insert(迭代器,元素) 在迭代器位置插入元素
assign(个数a, 元素b) 使容器只含a个元素b


几种重要算法

1)sort(a.begin(),a.end()); //默认从小到大排列(前闭后开)2)reverse(a.begin(),a.end()); //元素倒置(前闭后开)3)copy(a.begin(),a.end(),b.begin()+1); //从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素(前闭后开)4)find(a.begin(),a.end(),10); //查找元素10,若存在返回其在向量中的位置

 


 制作:BDT20040

posted @ 2021-05-27 20:39  流白李  阅读(85)  评论(0编辑  收藏  举报