0
点赞
收藏
分享

微信扫一扫

【c++入门(2)】vector

A邱凌 2022-04-13 阅读 74
c++vector

基础问题:

题目描述

给定一个长度为n的整数序列。现在有m个操作,操作分为三类,格式如下:

   ① 1 i:询问序列中第i个元素的值,保证i小于等于当前序列长度;

   ② 2 i v:在序列中第i个元素前加入新的元素v,保证i小于等于当前序列长度;

   ③ 3 i:删除序列中的第i个元素,保证i小于等于当前序列长度。
   输入格式

第一行输入n(1<=n<=1000),表示序列最初的长度。

第二行输入n个空格隔开的数表示原始的整数序列。

第三行输入m(1<=m<=1000),表示操作数。

第四到m+3行依次输入一个操作。
输出格式

对于操作①输出对应的答案,一行输出一个数。
输入输出样列
输入样例15
6 31 23 14 5
5
1 2
2 2 7
1 2
3 3
1 3


输出样例131
7
23


说明

1<=n<=1000, 1<=m<=1000,每个元素都是不超过1000000的正整数。
672
提交个数
418
通过个数

    耗时限制
    1000ms
    内存限制
    256MB


思路1:
在这里插入图片描述
vector简介:
vector是C++标准库提供的一个变长数组类型,它可以像数组一样进行数据的存储和访问,但是我们不需要指定vector的长度,vector会在需要的时候自动的扩展其自身的容量来容纳更多的数据。vector的内部存储结构和数组一样,使用的是一段连续的存储空间。
小贴士:使用vector需要有头文件:

#include <vector>

命名空间:
vector属于std名字空间,需要使用using namespace std; 引入std命名空间。

在这里插入图片描述

vector<int> v1; //定义一个空的vector v1
vector<int> v2(10, 1); //定义一个vector v2,v2中含有10个值为1的元素 
vector<int> v3(v2); //定义一个vector v3,v3复制了v2(v3 = v2)
vector<int> v4 = v2; //同上一行的作用一样,复制了v2 

在这里插入图片描述操作实例:

#include <iostream>
#include <vector>

using namespace std;



int main()
{


	vector<int> v(10, 1); //定义一个vector v, 里面含有10个为1的元素
	for (int i = 0; i < 10; i++) cout << v[i] << " "; //输出这vector v的10个为1的元素 
	cout << endl;
	for (int i = 0; i < 10; i++) v[i] += 10; //将vector v[i] 加上10; 
	v.front() -= 5; //运算 
	v.back() += 10; //运算 
	cout << "v.front is " << v.front() << endl;
	cout << "v.back is " << v.back() << endl;


    return 0;
}

在这里插入图片描述
【迭代器】
迭代器类似于指针,指向vector中元素的位置,可以使用迭代器来访问vector中的元素。
在这里插入图片描述
操作实例:

#include <iostream>
#include <vector>

using namespace std;



int main()
{


	vector<int> v;
	for (int i = 1; i <= 10; i++)v.push_back(i);
	vector<int>::iterator it1, it2;
	it1 = v.begin();
	cout << v[0] << " " << *it1 << endl;
	it2 = v.end() - 1;
	cout << v[9] << " " << *it2 << endl;
	for (int i = 0; i < v.size(); i++) v[i] += 5;
	vector<int>::iterator it3;
	for (it3 = v.begin(); it3 != v.end(); it3++) *it3 -= 2;
	for (it3 = v.begin(); it3 != v.end(); it3++) cout << *it3 << " ";


    return 0;
}

在这里插入图片描述
【vector排序】
在这里插入图片描述
【vector和数组】
相同点:
①两者都是使用连续的存储空间进行数据元素的存储;
②两者都可以通过下标进行访问;
不同点:
①数组定义需要指定数组长度,定义后不可改变;vector定义无需指定长度,使用中会自动调整。
②vector引入了新的访问机制:迭代器;
③vector提供了很多好用的方法,可以对vector进行快速的操作;

学习完了vector,我们再来写一下基础问题吧!
在这里插入图片描述
你会vector了吗?

举报

相关推荐

0 条评论