C++ STL初学之vector用法及使用

一、在C++中的详细说明

vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。
vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,
简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

二、 vector的用法

必须在你的头文件中包含下面的代码:
#include < vector>

1.vector定义与初始化
注:下面的T为数据类型 

vector< T> c2; // 创建一个空的vector
vector< T> c(n) // 创建一个vector,含有n个数据,数据均已缺省构造产生
vector< T> c(n, elem) // 创建一个含有n个elem拷贝的vector

#include 
#include 

using namespace std;

int main()
{
    vector a;  //定义一个空的vector容器
    vector b(10);   //定义一个大小为10的vector容器
    vector c(10,11);   //定义一个大小为10,且用11填充的vector容器
    a.push_back(200);  //在a的后面添加一个元素200
    cout <<"a第一个元素:"<< a.front()<

运行结果:
在这里插入图片描述

2. 析构函数

c.~vector () // 销毁所有数据,释放内存
c.clear(); // 移除容器中所有数据。

  • 这里有些问题,可能有些问题,请注意
#include 
#include 

using namespace std;

int main()
{
    vector b(10,12);   //定义一个大小为10的vector容器
    vector c(10,11);   //定义一个大小为10,且用11填充的vector容器
    cout <<"b的大小:"<< b.size()<

C++ STL初学之vector用法及使用_第1张图片

3. 成员函数

(1)容器vector的数据

  • c.back() // 传回最后一个数据,不检查这个数据是否存在。
  • c.front() // 传回第一个数据。
  • c.at(idx) //传回索引idx所指的数据,如果idx越界,抛出out_of_range。相当于c[idx]
  • c.max_size() // 返回容器中最大数据的数量。

(2)容器的大小

  • c.capacity() // 返回容器中数据个数。
  • c.size() // 返回容器中实际数据的个数。

(3)容器vector的迭代器

  • vector< int>::iterator b; //定义一个迭代器
  • c.begin() // 传回迭代器中的第一个数据地址。
  • c.end() // 指向迭代器中末端元素的下一个,指向一个不存在元素。
    • vector< int>::reserse_iterator c; //定义一个反向迭代器
  • c.rbegin() // 传回一个逆向队列的第一个数据。
  • c.rend() // 传回一个逆向队列的最后一个数据的下一个位置。

(4)容器vector的操作

  • c.push_back(elem) // 在尾部新开辟一个地址,并加入一个数据。
  • c.insert(pos,elem) // 在pos位置插入一个elem拷贝,传回新数据位置。
  • c.insert(pos,n,elem) // 在pos位置插入n个elem数据。无返回值。
  • c.clear() // 移除容器中所有数据。
  • c.erase(pos) // 删除pos位置的数据,传回下一个数据的位置。
  • c.erase(beg,end) //删除[beg,end)区间的数据,传回下一个数据的位置。
  • c.pop_back() // 删除最后一个数据。

(5)容器的状态

  • c.empty() // 判断容器是否为空。

(6)其他用法

  • c.assign(beg,end)
  • c.assign(n,elem) //将[beg; end)区间中的数据赋值给c。将n个elem的拷贝赋值给c。
  • get_allocator // 使用构造函数返回一个拷贝。
  • c.resize(num) // 重新指定队列的长度。
  • c.reserve() // 保留适当的容量。
  • c1.swap(c2)
  • swap(c1,c2) // 将c1和c2元素互换。同上操作。
  • operator[] // 返回容器中指定位置的一个引用。

三、vector的使用

1.使用不同的填充方式进行初始化vector及得到vector中的数据
#include 
#include 

using namespace std;

int main()
{
    vector b(5);   //定义一个大小为5的vector容器
    b.push_back(1);  //在b的最后面,开辟一个空间,并填充值1
    b.push_back(3);
    b.push_back(5);
    b.push_back(10);
    b.push_back(12);
    b.push_back(11);
    b.insert(b.begin()+2,99);  //在b的第2个元素后面插入99
    b[0]=88; //改变b的第一个元素

    cout << "b的最后一个:"<< b.back()<::iterator it;  //定义一个vector迭代器
    cout << "b中的元素为:\n";
    for (it=b.begin();it!=b.end();it++)
    {
        cout <<*it<<" ";   //打印数据
    }
    cout <

C++ STL初学之vector用法及使用_第2张图片

  • 注:push_back()是开辟一个空间,并填充数据
2.对vector数据的排序及迭代器使用
#include 
#include 
#include   //基本的算法

using namespace std;

int main()
{
    vector b(5);   //定义一个大小为5的vector容器
    b.push_back(1);  //在b的最后面,开辟一个空间,并填充值1
    b.push_back(11);
    b.insert(b.begin()+3,3,99);//在第三个元素后面添加三个数据99


    vector::iterator it;  //定义一个vector迭代器
    cout << "b中的元素为:\n";
    for (it=b.begin();it!=b.end();it++)
    {
        cout <<*it<<" ";
    }
    cout <::reverse_iterator rit;//定义一个反向迭代器
    cout <<"b降序排序的结果为:\n";
    for (rit=b.rbegin();rit!=b.rend();rit++)
    {
        cout <<*rit<<" ";
    }
    cout <

C++ STL初学之vector用法及使用_第3张图片

  • 注意排序方法的使用及迭代器的使用
3.删除数据
#include 
#include 
#include   //基本的算法

using namespace std;

int main()
{
    vector b(5);   //定义一个大小为5的vector容器
    b.push_back(1);  //在b的最后面,开辟一个空间,并填充值1
    b.push_back(11);
    b.insert(b.begin()+3,4,99);//在第三个元素后面添加4个数据99


    vector::iterator it;  //定义一个vector迭代器
    cout << "b中的元素为:\n";
    for (it=b.begin();it!=b.end();it++)
    {
        cout <<*it<<" ";
    }
    cout <

在这里插入图片描述

  • erase的前开后闭用法
  • at的用法 相当于[]

接下篇:
C++ STL初学之vector用法总结之补充

  • 请各位大佬多多指教

你可能感兴趣的:(C++,算法)