C++ STL vector 的一点点学习笔记(真的只有一点点)

介绍:

       vector : 与数组类似,而不同之处是其大小是动态的,它不会造成内存的浪费和越界。随机访问和在末尾处的插入和删除操作比较快,虽然支持中间的插入和删除,但不怎么快,有机会专门写一篇其各项操作与数组之间速度比较。

用法:

1.头文件

#include<vector>

2.定义方式

vector<int>vec1;      //定义一个int类型的vector
vector<string>vec2;   //定义一个string类的vector
vector<node>vec3;     //定义一个结构体类型的vector

3.迭代器

与数组进行 for 循环时用到的下标 i 类似,但比那个复杂,所要注意的也更多。

vector<int>::iterator it;  //定义一个迭代器

4.基本操作

例子(输入输出):

#include<vector>
#include<iostream>
using namespace std;

int main()
{
    vector<int>vec;
    vector<int>::iterator it;
    int n,temp;
    cin>>n;
    for(int i=0;i<n;++i)
    {
        cin>>temp;
        vec.push_back(temp);
    }
    for(it=vec.begin();it!=vec.end();++it)
    {
        cout<<*it<<endl;
    }
    for(int i=0;i<n;++i)
    {
        cout<<vec[i]<<endl;
    }
    return 0;
}

常用函数总结

  • 末尾添加元素: vec.push_back(data);
  • 末尾删除元素: vec.pop_back();
  • 任意位置插入元素: vec.insert(it,data);
  • 任意位置删除元素: vec.erase(it);
  • 删除[it_begin,it_end)的元素:vec.erase(it_begin,it_end);
  • 清空vector中的元素:vec.clear();
  • 开始指针:vec.begin();
  • 末尾指针:vec.end(); //指向最后一个元素的下一个位置
  • 返回第一个元素:vec.front();
  • 判断vector是否为空:vec.empty();//空1,非空0
  • 返回容器中的个数:vec.size();
  • 元素翻转
#include <algorithm>
reverse(vec.begin(), vec.end());
  • 元素排序
#include <algorithm>
sort(vec.begin(), vec.end()); //采用的是从小到大的排序
//如果想从大到小排序,可以采用上面反转函数,也可以采用下面方法:
bool Comp(const int& a, const int& b) 
{
    return a > b;
}
sort(vec.begin(), vec.end(), Comp);

  

参考资料:

https://www.cnblogs.com/zhonghuasong/p/5975979.html

http://www.cnblogs.com/aiguona/p/7228364.html

原文地址:https://www.cnblogs.com/l1l1/p/8542931.html