每日打卡c++中vector容器使用
Posted zhaoqianwan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日打卡c++中vector容器使用相关的知识,希望对你有一定的参考价值。
首先头文件#include<vector>
for_each一种算法需要头文件#include<algorithm>标准算法头文件
vector<int>::iterator迭代器,可以当指针用。
基本格式vector<数据类型>名称;数据类型可以是类。
例子
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class person
public:
person(string name, int age)
this->name=name;
this->age=age;
string name;
int age;
;
int main()
vector<person>v;
person p1("zhao", 1);
person p2("fu", 2);
person p3("qi", 3);
v.push_back(p1);
v.push_back(p2);
v.push_back(p3);
第一种遍历方法
//for (vector<person>::iterator it = v.begin(); it != v.end(); it++)
//
cout << (*it).name << " " << it->age << endl;//两种形式调用都可
//
第二种遍历方法
vector<person>::iterator itBegin = v.begin();
vector<person>::iterator itEnd = v.end();
while (itBegin != itEnd)
cout << (* itBegin).name<<itBegin->age<<endl;
itBegin++;
第三种遍历方法用for_each(v.begin(),v.end(),函数名)//v代表数组名
void myprint( person a)
cout << a.name<<" " << a.age << endl;
//需要写main外写一个打印函数
for_each(v.begin(), v.end(), myprint);
return 0;
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class person
public:
person(string name, int age)
this->name=name;
this->age=age;
string name;
int age;
;
int main()
vector<person*>v;
person p1("zhao", 1);
person p2("fu", 2);
person p3("qi", 3);
v.push_back(&p1);
v.push_back(&p2);
v.push_back(&p3);
for (vector<person*>::iterator it = v.begin(); it != v.end(); it++)
cout << (*it)->name << " " << (*it)->age << endl;
return 0;
vector构造的几种方式:
1: vector<T>v 模板实现类实现,默认构造函数 格式vector<类型>v;
2:vector(v.begin(),v.end()) 将v[begin(),end()]区间中元素拷贝 格式vector<类型>v2(v1.begin(),v1.end());
3:vector(n,elem) 构造函数将n个elem拷贝 格式vector<类型>v(10,100);10个100
4:vector(const vector&c) 拷贝构造函数 格式vector<类型>v2(v1);
vector赋值操作:assign
1:v2.assign(v1.begin(),v1.end()) 前闭后开,不会取end的值;
2:v2.assign(n,elem) 添加n个elem;
也可用operator= ;
vector的容量和大小:
1:empty() 判断容器是否为空,若空返回true,不空返回false;
2: capacity() 容器容量大小
3:size()返回容器实际元素个数
4:resize(int num) 重新指定容器长度为num,若容器变长,填充默认值,若变短,则删除超出部分元素
5:resiae(int num,elem) 重新指定容器长度为num,若容器变长,填充指定默认值,若变短,则删除超出部分元素
vector的插入和删除:
1: push_back(elem) 在最后插入元素elem
2: pop_back() 删除最后一个元素
3:insert(const _iterator pos,elem) 迭代器指定位置pos插入元素elem 如:v.insert(v.begin(),100);
4:insert(const _iterator pos,int count,elem) 迭代器指定位置pos插入元素count个elem 如:v.insert(v.begin(),2,100);
5:erase(const _iterator pos,elem) 删除迭代器指向元素
6:erase(const _iterator start,const _iterator end) 删除迭代器从start到end元素 如:v.erase(v.begin(),v.end());
7: clear() 删除所有元素 如:v.clear()
vector数据存取
1: at(int idex) 返回索引idex所指数据 如:v.at(i)
2: operator[] 返回索引idex所指数据
3: front() 返回第一个元素 v.front()
4: back() 返回最后一个元素
for (int i = 0; i < size(); i++)
cout << v[i] << endl;
//可以这样输出
vector互换容器:可以用来缩小内存
1:swap(vec) 将vec与本身元素互换 如:v1.swap(v2)
收缩内存格式:vector<类型>(v).swap(v)
vector预留空间
1:reserve(int len) 容器预留len个元素长度,预留元素不会初始化,不可访问 如:v.reserve(10000);
C++ vector容器用法
在C++中,vector是个十分有用的容器,掌握这个容器的基础的用法十分有必要。
一、基本操作
- 头文件:#include<vector>
- 创建vector对象:vector<type> vec;
- 尾部插入变量:vec.push_back(a);
- 去掉最后一个数据:vec.pop_back();
- 使用下标访问元素:vec[0],下标从0开始
- 使用迭代器访问元素:
1 vector<int> vec; 2 vector<int>::iterator i; 3 for(i = vec.begin(); i != vec.end(); i++) 4 cout << *i << endl;
- 插入元素:vec.insert(vec.begin()+i, a),在第 i+1 个元素面前插入a;
- 删除元素:vec.erase(vec.begin()+2);删除第三个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间默认从0开始 - 返回最后一个元素:vec.back();
- 大小:vec.size();
- 清空:vec.clear();
二、常用函数
- 翻转:需头文件 #include<algorithm>
reverse(vec.begin(), vec.end()); - 排序:需头文件 #include<algorithm>
sort(vec.begin(), vec.end());默认是升序,从小到大
简单的就是这些,一般可以应付日常使用,更多的可以去官方的reference自己查看。
以上是关于每日打卡c++中vector容器使用的主要内容,如果未能解决你的问题,请参考以下文章