蓝桥杯备赛-常用数据结构vectorset和map

Posted As_zyh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯备赛-常用数据结构vectorset和map相关的知识,希望对你有一定的参考价值。

一、vector

不定长数组vector,相比c语言原生的数组,可以作为函数参数或返回值,可以任意修改大小。
使用方法如下:

#include<iostream>
#include<vector>
using namespace std;

//参数是一个vector的引用,实际上vec的地址就是v的地址
void addNum(vector<int>& vec) 
	for(int i = 0; i < 5; i++) 
		vec.push_back(i); //在vector最后添加一个元素 
	


void printVec(const vector<int> vec) 
	//size()返回长度   
	for(int i = 0; i < vec.size(); i++) 
		//at()返回指定位置的元素,越界会抛出异常,比用[]越界访问非法内存更安全
		cout << vec.at(i) << " ";
	
	cout<<endl;
 

int main() 
	//定义一个int型的vector 
	vector<int> v; 
	
	//empty()返回是否为空   
	cout << "The vector is empty? " << v.empty() << endl;  
	
	addNum(v);
	printVec(v); 
	
	v.pop_back(); //删除最后一个元素
	printVec(v);
	
	v.resize(2);  //改变大小,也可以起到范围删除的作用
	printVec(v);
	
	return 0;
 

程序的运行结果为:

The vector is empty? 1
0 1 2 3 4
0 1 2 3
0 1



二、set

集合set,常用于数据的去重。set会将内部元素排序,所以将类型应用于set时,需要定义“小于”运算符。set的使用方法如下。

#include<iostream>
#include<set>
using namespace std;

//打印集合s 
void printSet(const set<int> s) 
	for(set<int>::iterator it= s.begin(); it != s.end(); it++) 
		cout << *it << " ";
	
	cout << endl;


int main() 
	set<int> s;
	
	int a[] = 2, 3, 1, 0, 1, 4, 4;
	
	for(int i = 0; i < 7; i++) 
		//intsert()向set中插入数据 
		s.insert(a[i]);
	
	
	printSet(s);
	
	cout << s.count(4) << endl; //4在集合中 
	cout << s.count(6) << endl; //6不在集合中 
	return 0;

程序的输出为:

0 1 2 3 4
1
0



三、map

映射map,就是常用的键-值对。

#include<iostream>
#include<string>
#include<map>
using namespace std;

int main() 
	map<int, string> m;
	m[0] = "Hello";
	m[1] = "World";
	for(int i = 0; i < m.size(); i++) 
		cout << m[i] << " ";
	
	cout << endl;
	return 0;

程序的输出:

Hello World

以上是关于蓝桥杯备赛-常用数据结构vectorset和map的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯备赛-常用数据结构vectorset和map

蓝桥杯备赛--带你入门树状数组

蓝桥杯备赛--带你入门树状数组

(4.3)数组对象及类数组对象,set的用法,正则表达式的常用方法,蓝桥杯备赛-(生成数组数组去重实现模板字符串的解析新课上线啦)

蓝桥杯备赛刷题

蓝桥杯备赛刷题