每日打卡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是个十分有用的容器,掌握这个容器的基础的用法十分有必要。

一、基本操作

  1. 头文件:#include<vector>
  2. 创建vector对象:vector<type> vec;
  3. 尾部插入变量:vec.push_back(a);
  4. 去掉最后一个数据:vec.pop_back();  
  5. 使用下标访问元素:vec[0],下标从0开始
  6. 使用迭代器访问元素:
    1 vector<int> vec;
    2 vector<int>::iterator i;
    3 for(i = vec.begin(); i != vec.end(); i++)
    4     cout << *i << endl;

     

  7. 插入元素:vec.insert(vec.begin()+i, a),在第 i+1 个元素面前插入a;
  8. 删除元素:vec.erase(vec.begin()+2);删除第三个元素
    vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间默认从0开始
  9. 返回最后一个元素:vec.back();  
  10. 大小:vec.size();
  11. 清空:vec.clear();

二、常用函数

  1. 翻转:需头文件 #include<algorithm>
    reverse(vec.begin(), vec.end());
  2. 排序:需头文件 #include<algorithm>
    sort(vec.begin(), vec.end());默认是升序,从小到大

 

简单的就是这些,一般可以应付日常使用,更多的可以去官方的reference自己查看。

以上是关于每日打卡c++中vector容器使用的主要内容,如果未能解决你的问题,请参考以下文章

C++中STL学习笔记——容器之vector

C++ vector容器用法

C++ vector容器的使用

C++中vector容器

C++中vector的用法

C++ 提高教程 STL - Vector容器嵌套容器