C++ std::vector 容器

<1>有文件  

#include <vector>

<2>创建vector对象

std::vector<int> vec;  //模板类型可以是 int double short string struct class map list set vector等

<3>数据插入vector

vec.push_back(a);
vec.push_back(b);
vec.push_back(c);

#删除vec向量最后一个元素
vec.pop_back()

<4>指定位置插入数据

# 在第i+1个元素前面插入a
vec.insert(vec.begin()+i,a);
#在指定位置loc 前插入值为val的元素,返回指向这个元素的迭代器
iterator insert(iterator loc,cosnt TYPE &val);
#在指定位置loc前插入num个值为val的元素
void insert(iterator loc,size_tpye num, const TYPE &val);
#在指定位置loc前插入区间[start, end)的所有元素
void insert(iterator loc ,input_iterator start, input_iterator end)

<5>删除元素

#删除第i + 1 个元素 
vec.erase(vec.begin() + i)

<6>删除区间里的元素

#删除区间[i,j-1]元素,下标从0开始
vec.erase(vec.begin() + i,vec.end() + j)

<7>向量大小

vec.size()

#返回vec在内存中总共可以容纳的元素个数
vec.capacity()

#将vec的现有元素个数调至10个,多则删,少则补,其值随机
vec.rezize(10)

#将vec的现有元素个数调至10个,多则删,少则补,其值为2
vec.resize(10,2)

#b为向量,将a中的元素和b中的元素进行整体性交换
a.swap(b)

#b为向量,向量的比较操作还有!=,>=,<=,>,<
a == b    

<8>清空向量

vec.clear()

<9> 向量元素访问 下标法 (下标只能用于获取已存在的元素,而现在的vec[i]还是空的对象)

cout<< vec[0]<<endl;
cout<< vec[1]<<endl;
cout<< vec[2]<<endl;

#返回vec最后一个元素
vec.back()
#返回vec第一个元素

<10>向量元素访问 at(i)


for(int i = 0;i < vec.size();i++)
{
    cout<<vec.at(i)<<endl;
}
<11>向量元素访问 迭代器iterator
std::vector<int>::interator it;
#for(std::vector<int>::interator it = vec.begin();it != vec.end();it++)
for(it = vec.begin() ; it != vec.end() ;it++)
{
    cout<<*it<<endl;
}

<12> 向量vector 排序 需要头文件 

#include<algorithm>
#将vec元素翻转 倒序 reverse()
reverse(vec.begin(),vec.end())

# sort()  默认是升序排序  从小到大
sort(vec.begin(),vec.end())

    降序排序定义自己的比较函数

bool comp(cost int &a, const int &b)
{
  return a > b;
}
调用时:
sort(vec.begin(),vec.end(),comp)

<13>二维数组vector 使用

#include "stdafx.h"  
#include <cv.h>  
#include <vector>   
#include <iostream>   
using namespace std;  
int main()  
{  
    using namespace std;  
    int out[3][2] = { 1, 2,   
             3, 4,  
            5, 6 };  
    vector <int*> v1;  
  
    v1.push_back(out[0]);  
    v1.push_back(out[1]);  
    v1.push_back(out[2]);  
  
    cout << v1[0][0] << endl;//1  
    cout << v1[0][1] << endl;//2  
    cout << v1[1][0] << endl;//3  
    cout << v1[1][1] << endl;//4  
    cout << v1[2][0] << endl;//5  
    cout << v1[2][1] << endl;//6  
  
    return 0;  
} 

参考:

https://blog.csdn.net/fanyun_01/article/details/56842637

https://blog.csdn.net/duan19920101/article/details/50617190/ 

https://blog.csdn.net/msdnwolaile/article/details/52708144

猜你喜欢

转载自blog.csdn.net/qq_29796781/article/details/80229058
今日推荐