首页 > 编程语言 >每日打卡c++中vector容器使用

每日打卡c++中vector容器使用

时间:2023-05-09 23:44:06浏览次数:35  
标签:begin end int age elem 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);

标签:begin,end,int,age,elem,c++,vector,打卡
From: https://www.cnblogs.com/zhaoqianwan/p/17386373.html

相关文章

  • 打卡10
    #include<iostream>usingnamespacestd;voidshz(int*arr,intlen){ for(inti=0;i<len-1;i++) { for(intj=0;j<len-1-i;j++) { if(arr[j]<arr[j+1]) { inttemp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } }} voidshz2(int*arr,intl......
  • 每天打卡一小时 第二十三天
    6-6【CPP0028】以圆类Circle及立体图形类Solid为基础设计圆柱类Cylinder分数 10全屏浏览题目切换布局作者 C++多态编程单位 石家庄铁道大学以点类Point及平面图形类Plane为基类公有派生圆类Circle,再以圆类Circle及立体图形类Solid为基类公有派生......
  • c++打卡第二十一天
    一、爱因斯坦的数学题1、问题描述2、设计思路。①、输入N,从1到n遍历。②、寻找满足上述条件的数,得到符合条件的个数加一并打印出这个数。3、流程图4、代码实现#include<iostream>usingnamespacestd;intmain(){intN;intflag=1;intcount;whi......
  • 现代 C++:Lambda 表达式
    Lambda表达式(LambdaExpression)是C++11引入的一个“语法糖”,可以方便快捷地创建一个“函数对象”。从C++11开始,C++有三种方式可以创建/传递一个可以被调用的对象:函数指针仿函数(Functor)Lambda表达式函数指针函数指针是从C语言老祖宗继承下来的东西,比较原始,功能也比......
  • C++ Lambda表达式的完整介绍
    c++在c++11标准中引入了lambda表达式,一般用于定义匿名函数,使得代码更加灵活简洁。lambda表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更简洁,并且可以在函数内部定义。什么是Lambda表达式最常见的lambda的表达式写法如下autoplus=[](intv1,int......
  • C++11 lambda表达式精讲
    lambda表达式是C++11最重要也最常用的一个特性之一,C#3.5和Java8中就引入了lambda表达式。 lambda来源于函数式编程的概念,也是现代编程语言的一个特点。C++11这次终于把lambda加进来了。 lambda表达式有如下优点:声明式编程风格:就地匿名定义目标函数或函数对......
  • 1009 说反话(C++)
    一、问题描述:给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有......
  • c++打卡练习(23)
    亲密数如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ inta,i,b,n; printf("Therearefollowing......
  • 编程打卡:面向对象程序设计测试
    面向对象程序设计测试#include<iostream>#include<iomanip>usingnamespacestd;classPoint{protected:doublex,y;public:Point(doublea=0,doubleb=0):x(a),y(b){cout<<"Pointconstructorcalled\n";......
  • C++异常和错误处理机制:如何使您的程序更加稳定和可靠
    在C++编程中,异常处理和错误处理机制是非常重要的。它们可以帮助程序员有效地处理运行时错误和异常情况。本文将介绍C++中的异常处理和错误处理机制。什么是异常处理?异常处理是指在程序执行过程中发生异常或错误时,程序能够捕获并处理这些异常或错误的机制。例如,当程序试图访问......