蓝桥杯备赛-常用数据结构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的主要内容,如果未能解决你的问题,请参考以下文章
(4.3)数组对象及类数组对象,set的用法,正则表达式的常用方法,蓝桥杯备赛-(生成数组数组去重实现模板字符串的解析新课上线啦)