【c++入门(2)】vector

【c++入门(2)】vector,第1张

基础问题:

题目描述

给定一个长度为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属于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 
#include 

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 
#include 

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了吗?

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/579143.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存