C++中的模板类vector
来源:互联网 发布:抛硬币实验数据 编辑:程序博客网 时间:2024/06/06 22:21
初步认识
模板类vector是一种动态数组,可以在运行程序时设置vector对象的长度,可以动态地进行删除、添加等操作,可以像访问数组一样用[]来访问某一个元素。在使用vector时,需要包含头文件
定义模板类vector
如果要定义一个vector并命名为N,其中每个元素的类型都是int,可以这样写:
vector<int> N;
添加元素
可以使用push_back()
方法’向vctor末尾添加元素:
for (int i = 0; i < 5; i++) { N.push_back(2*i); }
元素输出
可以使用同数组一样的方法输出vector:
for (int i = 0; i < N.size(); i++) { cout << "the "<<i<<"th number = " << N[i] << endl; }
获取vector大小
cout << "size of N = " << N.size() << endl;
清空vector
N1.clear();cout << "size of N1 = " << N1.size()<<endl;
vector中的迭代器使用
迭代器的作用和指针很像,它使得我们对vector的操作更加灵活。
定义一个迭代器
如果想定一个迭代器并指向上面定义的vector的起始位置,可以这么写:
vector<int>::iterator pd; pd = N.begin(); //auto pd = N.begin(); //C++11自动推断类型
值得一提的是,c++11中可以直接使用auto
来推断定义的类型,使定义迭代器更加方便。另外,.begin()
成员函数返回第一个元素的位置,相应的,.end()
返回结尾后一位的位置。这两个函数在结合迭代器使用非常频繁。
使用迭代器遍历vector
auto pd = N.begin(); int j = 0; for (pd = N.begin(); pd != N.end(); pd++) { cout << "the " << j << "th number = " << *pd << endl; j++; }
需要注意的是,.end()
返回的是结尾后一位的位置。
删除vector中指定位置或区域元素
N.erase(N.begin()); //删除指定位置元素 N.erase(N.begin(), N.begin() + 2); //删除指定区间元素:N.begin(),N.begin()+1 N.pop_back(); //删除最后一个位置元素
vector中插入元素
N.insert(N.begin() + 1, 10); //插入单个元素 N.insert(N.begin() + 2, {20, 30}); //插入多个元素 //插入另一个vector中的某一区域元素 vector<int> M; M.push_back(40); M.push_back(50); M.push_back(60); N.insert(N.begin()+4, M.begin(), M.end());
完整示例代码
/* main.cpp描述:C++中vector的基本操作日期:2017年11月21日*/#include <iostream>#include <vector>using namespace std;int main(){ /*vector基本操作*/ cout << "**************************" << endl; //定义、添加元素、输出 vector<int> N; for (int i = 0; i < 5; i++) { N.push_back(2*i); } for (int i = 0; i < N.size(); i++) { cout << "the "<<i<<"th number = " << N[i] << endl; } cout << "size of N = " << N.size() << endl; //清空 cout << endl; vector<int> N1 = N; cout << "size of N1 = " << N1.size()<<endl; N1.clear(); cout << "size of N1 = " << N1.size()<<endl; /*vector中的迭代器*/ cout << "**************************" << endl; //定义迭代器 vector<int>::iterator pd; pd = N.begin(); //auto pd = N.begin(); //C++11自动推断类型 //与指针用法类似 for (int i = 0; i < N.size(); i++) { cout << "the " << i << "th number = " << *(pd + i) << endl; } //利用迭代器遍历vector cout << "**************************" << endl; int j = 0; for (pd = N.begin(); pd != N.end(); pd++) { cout << "the " << j << "th number = " << *pd << endl; j++; } //删除vector中指定位置或区域元素 cout << "**************************" << endl; N.erase(N.begin()); N.erase(N.begin(), N.begin() + 2); //N.begin(),N.begin()+1 N.pop_back(); //删除最后一个位置元素 j = 0; for (pd = N.begin(); pd != N.end(); pd++) { cout << "the " << j << "th number = " << *pd <<endl; j++; } //vector中插入元素 cout << "**************************" << endl; N.insert(N.begin() + 1, 10); //插入单个元素 N.insert(N.begin() + 2, {20, 30}); //插入多个元素 j = 0; for (pd = N.begin(); pd != N.end(); pd++) { cout << "the " << j << "th number = " << *pd << endl; j++; } //插入另一个vector中的某一区域元素 cout << "**************************" << endl; vector<int> M; M.push_back(40); M.push_back(50); M.push_back(60); N.insert(N.begin()+4, M.begin(), M.end()); j = 0; for (pd = N.begin(); pd != N.end(); pd++) { cout << "the " << j << "th number = " << *pd << endl; j++; } cin.get(); return 0;}
输出结果
阅读全文
0 0
- c++vector模板类
- c++vector模板类
- C模板实现STL容器中的vector
- C++中的模板类vector
- C++:STL模板类vector
- 【c++】模板实现动态Vector
- C++:标准模板库vector
- C++——模板类vector和array
- vector模板类
- 类模板vector入门
- vector模板类
- vector模板类
- C++,vector模板类的问题? std::vector<PointT, Eigen::aligned_allocator<PointT> > points;
- 【c++】模板实现vector和list
- 【C++】用模板实现顺序表Vector
- vector模板类的用法
- C++之vector模板类
- C++ 简单Vector模板类
- 关于利用Gson转json
- 如何下载网页中的视频?
- sklearn的认识
- zepto--学习demo1
- OJ1104: 求因子和(函数专题)
- C++中的模板类vector
- 容易看错结果几个小程序
- Unbutu学习记录
- Android开发调试必备
- CTC 介绍
- Cannot run program "/usr/local/android-sdk-linux/build-tools/23.0.2/aapt": error=2, No such file or
- Week 1, Aerial Robotics
- MySQL 5.7 非安装版配置与连接
- Leetcode算法学习日志-436 Find Right Interval