目录
- STL之Vecter
- 一丶STL简介
- 二丶Vector用法
- 1.vector容器的使用
- 2.vector迭代器.
- 3.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(); 删除容器中任意一个位置的元素.
原文地址:https://www.cnblogs.com/iBinary/p/9885692.html