#include<vector>

#include<vector>

查了下这个头文件的作用,现在搞不懂,先保存再说,貌似好用
先简单介绍一下,vector是一种顺序容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组,它的随机访问快,在中间插入和删除慢,但在末端插入和删除快,而且如果你用.at()访问的话,也可以做越界检查。

#include <vector>

双端队列deque比向量vector更有优势
vector是动态数组,在堆上
vector比array更常用
不需要变长,容量较小,用array
需要变长,容量较大,用vector
1 at()

取出下标

2 c_str()

执行

3 clear()

清空

4 erase()

根据迭代器的位置,删除元素

erase(myvector.begin() + 3)

5 fill

填充

6 find

7 find_if

8 find_if_not

9 insert()

插入元素

insert(myvector.begin() + 3, 998);//在第4个位置插入

10 pop_back()

删除最后一个元素

11 push_back()

push_back,算法语言里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。

12 size()

求数组元素个数

13 sort

排序

14 swap()

交换

1 at()

取出下标

4 erase()

根据迭代器的位置,删除元素

erase(myvector.begin() + 3)

5 insert()

插入元素

insert(myvector.begin() + 3, 998);//在第4个位置插入

6 pop_back()

删除最后一个元素

7 push_back()

push_back,算法语言里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。

8 size()

求数组元素个数

1

三。在第2个位置前插入,新数据变成第2(从0开始计算的话)
38
39 for (int i = 0; i < myvector.size(); i++)//遍历
40 {

41 std::cout << myvector[i] << std::endl;
42 }
43 std::cout << std::endl;
44
45 system(“pause”);
46 }

2 c_str()

执行

3 clear()

清空

6 pop_back()

删除最后一个元素

7 push_back()

push_back,算法语言里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。

8 size()

求数组元素个数

1

#include <iostream>
#include <vector>
using namespace std;
void main()
{

std::vector<int>myvector;//创建一个数组,数组元素是int类型
myvector.push_back(1);//尾部加入一个数据
myvector.push_back(11);
myvector.push_back(111);
myvector.push_back(1111);
myvector.push_back(2);
myvector.pop_back();//删除尾部元素
for (int i = 0; i < myvector.size(); i++)//遍历
{

//std::cout << myvector[i] << std::endl;//上下一样
std::cout << myvector.at(i) << std::endl;//上下一样,at()可以取出下标
}
std::cout << std::endl;
//根据迭代器的位置删除
myvector.erase(myvector.begin() + 3);//删除第四个元素。删除第3个元素(从0开始计算的话)
for (int i = 0; i < myvector.size(); i++)//遍历
{

if (1)
{

//可以增加查询,修改功能
}
std::cout << myvector[i] << std::endl;
}
std::cout << std::endl;
myvector.insert(myvector.begin() + 2, 998);//在第三个位置前插入,新数据变成第三。在第2个位置前插入,新数据变成第2(从0开始计算的话)
for (int i = 0; i < myvector.size(); i++)//遍历
{

std::cout << myvector[i] << std::endl;
}
std::cout << std::endl;
system("pause");
}

//正向迭代器iterator,begin()返回一个迭代器,它指向容器c的第一个元素,end()返回一个迭代器,它指向容器c的最后一个元素的下一个位置

//反向迭代器reverse_iterator,rbegin()返回一个逆序迭代器,它指向容器c的最后一个元素,rend()返回一个逆序迭代器,它指向容器c的第一个元素前面的位置

image

反向迭代器是一种反向遍历容器的迭代器。也就是,从最后一个元素到第一个元素遍历容器。反向迭代器将自增(和自减)的含义反过来了:对于反向迭代 器,++ 运算将访问前一个元素,而 – 运算则访问下一个元素。

1


```cpp
#include <iostream>
#include <vector>
using namespace std;
void main()
{

std::vector<std::string>string1;//创建一个字符串数组
string1.clear();//清空
string1.push_back("notepad");//尾部加入
string1.push_back("calc");
string1.push_back("mspaint");
//正向迭代器iterator,begin()返回一个迭代器,它指向容器c的第一个元素,end()返回一个迭代器,它指向容器c的最后一个元素的下一个位置
std::vector<std::string>::iterator ibegin, iend;//创建两个迭代器指针
ibegin = string1.begin();//初始化迭代器指针,数据起始点
iend = string1.end();//初始化迭代器指针,结束
for (; ibegin != iend; ibegin++)//从头到尾
{

std::string tempstr = *ibegin;//创建中间临时变量,获取指针指向的数据
system(tempstr.c_str());//执行
}
//反向迭代器reverse_iterator,rbegin()返回一个逆序迭代器,它指向容器c的最后一个元素,rend()返回一个逆序迭代器,它指向容器c的第一个元素前面的位置
std::vector<std::string>::reverse_iterator rbegin = string1.rbegin();//创建迭代器指针,数据起始点
std::vector<std::string>::reverse_iterator rend = string1.rend();//创建迭代器指针,结束
while (rbegin != rend)//从尾到头
{

std::string tempstr = *rbegin;//获取指针指向的数据
system(tempstr.c_str());//执行
rbegin++;//指针移动
}
system("pause");
}

7 push_back()
push_back,算法语言里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。
8 size()
求数组元素个数
//创建一个数组变量,元素是数组
vector可用于管理不规则的树状结构
国家-省-市县
#include <iostream>
#include <vector>
using namespace std;
void main()
{

std::vector<int>myvector1;//创建一个数组变量,元素是int类型
myvector1.push_back(12);
myvector1.push_back(13);
myvector1.push_back(14);
std::vector<int>myvector2;//创建一个数组变量,元素是int类型
myvector2.push_back(22);
std::vector<int>myvector3;//创建一个数组变量,元素是int类型
myvector3.push_back(32);
myvector3.push_back(37);
std::vector<std::vector<int>>allvector;//创建一个数组变量,元素是数组
allvector.push_back(myvector1);
allvector.push_back(myvector2);
allvector.push_back(myvector3);
for (int i = 0; i < allvector.size(); i++)//遍历
{

for (int j = 0; j < allvector[i].size(); j++)
{

std::cout << " " << allvector[i][j];
}
std::cout << std::endl;
}
system("pause");
}

fill

#include <iostream>
#include <algorithm>
#include <vector>
template <class T>
class show
{

public:
void operator()(T &t)
{

std::cout << t << " ";
}
};
void main()
{

std::vector<int>myv;
myv.push_back(7);
myv.push_back(8);
myv.push_back(9);
myv.push_back(4);
myv.push_back(5);
myv.push_back(6);
fill(myv.begin() + 2, myv.end(), 10);//从下标2开始到尾部,用10填充
for_each(myv.begin(), myv.end(), show<int>());
}

find

#include <iostream>
#include <vector>
void main()
{

std::vector<int>myv;
myv.push_back(1);
myv.push_back(2);
myv.push_back(3);
auto i = find(myv.begin(), myv.end(), 22);
if (i == myv.end())
{

std::cout << "not found" << std::endl;
}
else
{

std::cout << *i << std::endl;
}
}

sort

全部元素排序

#include <iostream>
#include <algorithm>
#include <vector>
template <class T>
class show
{

public:
void operator()(T &t)
{

std::cout << t << " ";
}
};
void main()
{

std::vector<int>myv;
myv.push_back(7);
myv.push_back(8);
myv.push_back(9);
myv.push_back(4);
myv.push_back(5);
myv.push_back(6);
sort(myv.begin(), myv.end());//排序
for_each(myv.begin(), myv.end(), show<int>());
}
sort
部分元素排序
  #include <iostream>
#include <algorithm>
#include <vector>
template <class T>
struct show
{

public:
void operator()(T &t)
{

std::cout << t << " ";
}
};
void main()
{

std::vector<char>myv;
myv.push_back('B');
myv.push_back('A');
myv.push_back('C');
myv.push_back('Y');
myv.push_back('Z');
myv.push_back('X');
for_each(myv.begin(), myv.end(), show<char>());
std::cout << std::endl;
sort(myv.begin(), myv.begin() + 3);
for_each(myv.begin(), myv.end(), show<char>());
std::cout << std::endl;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/114927.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mish函数_实现多态的方式不包括

    mish函数_实现多态的方式不包括classMish(nn.Module):@staticmethoddefforward(x):returnx*F.softplus(x).tanh()classMemoryEff

  • PyCharm激活码永久有效PyCharm2018.2.7激活码教程-持续更新,一步到位

    PyCharm激活码永久有效PyCharm2018.2.7激活码教程-持续更新,一步到位PyCharm激活码永久有效2018.2.7激活码教程-Windows版永久激活-持续更新,Idea激活码2018.2.7成功激活

  • .NET中代理服务器WebProxy的各种用法

    .NET中代理服务器WebProxy的各种用法因为涉及到代理的各种情况,WebRequest和WebProxy类的文档写的相当复杂,不但各个文档关注点不同,而且不同版本的同一文档也有小小的区别,网上也没有关于这个类的相关文章。于是乎这篇Blog是我钻研半天MSDN很久后总结并且花了一小时憋出来的,希望下面的内容能帮到大家。(AcDown中也使用了相关的代码,有兴趣的可以找来看看【解析】.NET中代理服务器WebProxy的各种用法)直接进入

  • 上那学计算机,从零开始学电脑(学电脑从哪开始)

    上那学计算机,从零开始学电脑(学电脑从哪开始)从零开始学电脑(学电脑从哪开始)如今,手机已经成为我们生活中不可缺少的必需品,各种手机应用软件的层出不穷,使得智能手机占据了互联网的半壁江山,似乎手机无所不能了,平时,很多人觉得一手机在手便可以仗剑走天涯,但当我们走进职场,你就会发现,对于办公而言,手机还是有很大的局限性,掌握电脑知识,熟悉电脑基本操作是胜任工作的必备技能。真是“书到用时方恨少”。今天开始,涛哥就带你走进电脑的世界,让你从电脑小白…

  • CompoundButton

    CompoundButtonCompoundButton具有两种状态的按钮,选中和未选中。当按钮被按下或点击时,状态会自动改变。这是一个抽象类,目前有的子类有复选框,单选按钮,开关,切换按钮。 复选框 复选框是一种特定类型的双状态按钮,可以选中或取消选中。 单选按钮 单选按钮是两个状态的按钮,可以选中也可以取消选中。 转变 Switch是一个双态切换开关小部件,可以在两个选项之间进行选择。 …

  • Java学习网站推荐

    Java学习网站推荐学习Java不仅依靠自身的努力,还要多看一些相关技术文档,那么必不可少的就是学习Java的网站,本人整理收集一些Java学习网站,这些网站可以提供一些最新Java的资料,有时定期开设讲座等线下活动,而且里面的一些Java相关的问题以及讨论,不仅适用于Java小白程序员,而且还适用于一些Java大神,其实外网有很多比较专业的Java学习网站,但是鉴于为Java小白推荐网站,立足当下!!!所以推…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号