C++STL模板库之vector

目录

STL之Vecter

一丶STL简介

STL 是标准模板库的意思. 就是数据结构,封装成类让我们使用. 使用的时候我们要了解数据结构才可以使用这些类.因为数据结构不知道是什么结构你用类的话也用不明白.

二丶Vector用法

1.vector容器的使用

首先介绍的第一个序列容器就是 vector. 它底层是数组.可以理解为是动态数组.
我们自己也可以写一个动态数组.然后 将运算符[] 进行重载.
使用之前需要包含头文件,以及使用命名空间.std. 类是在这里面定义的.

 #include<vector>
using namespace std;

因为是动态数组.所以vector容器操作的都是尾部操作.就也是数组后面进行增删改查.

2.vector迭代器.

vector的迭代器有两种.

vector<object>::const_iterator  const_iterator迭代器是不能修改内容的
vector<object>::iterator   iterator定义的迭代器是可读可写的.

编写代码如下:
栈代码:

#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int main(char *argc,char *argv[]) 
{

    vector<int> a;
    a.push_back(1);
    a.push_back(2);

    vector<int>::const_iterator it = a.begin();
    while (it != a.end()) 
    {
        cout << *it << endl;
        ++it;
    }
    system("pause");

}

方法:
push_back(Value); 是往数组后面添加值.
begin(); 获取第一个元素
end(); 获取最后一个元素.

*it 获取值.
上面的代码使我们存放的int类型数据. 其实vector可以当做数组来用.是变长的数组.
跨平台的. 我们不光可以存储int 也可以存储 基本类型.以及指针类型都是可以的.或者存储
函数指针也可以.
例如下:

typedef int(*pFn)(int , int );
int Add(int a, int b)
{
    return a + b;
}
int main(char *argc,char *argv[]) 
{
    pFn p = Add;
    vector<pFn> pfnve;
    pfnve.push_back(p);
    vector<pFn>::iterator it = pfnve.begin();
    while (it != pfnve.end())
    {
        cout << (*it)(1, 2) << endl; //第一种输出方式
        cout << it[0](1, 4) << endl; //使用[]操作符输出
        it++;
    }
    system("pause");

}

结果第一个会输出3,第二个会输出五,因为我们存储了一个函数指针.如果存储多个.则可以进行多次调用.
堆代码:
上面使用的 vector是在栈中定义的,我们也可以定义为指针.也就是在堆中使用.
代码如下:

int main(char *argc,char *argv[]) 
{
    vector<int> *a = new vector<int>;
    a->push_back(1);
    a->push_back(2);
    a->push_back(4);
    a->push_back(3);
    a->push_back(5);

    vector<int>::const_iterator it = a->cbegin();
    while (it != a->cend())
    {
        cout << (*it) << endl;
        cout << it[0] << endl;
        it++;
    }
    cout << "---------------------------" << endl;

    system("pause");

}

cbegin(); 也是返回第一个元素,前提是你使用const_iterator 迭代器才可以. cbegin()c开头就是const的意思.常量的意思.也就是说不能更改.

3.vector中的方法.

push_back(Value); 往vector容器后面添加一个数据.
begin(); 获取第一个元素.
end(); 获取最后一个元素.
size(); 容器中元素的个数,可以通过 for(i < xx.size());的方式遍历
clear(); 清空容器中的所有元素
front(); 返回容器中第一个元素的值,跟begin()不同,它是返回值
back(); 返回容器中最后一个元素的值
pop_back(); 返回容器中最后一个元素的值,并且清空最后一个元素.
erase(); 删除容器中任意一个位置的元素.

猜你喜欢

转载自www.cnblogs.com/iBinary/p/9885692.html