针对蓝桥杯竞赛(C++)的基础知识 No.1

Q1: 什么是STL?

STL(Standard Template Library)标准模板库

  • 就是对user提供3样东西:算法(algorithm)、容器(container)、迭代器(iterator),提供基本数据结构基本算法

Q2:数据结构怎么用?

1、栈 (stack,先进后出表(LIFO)):

①只能在某一端插入和删除的特殊线性表;
②栈底(Bottom)固定,栈顶(Top)(允许插入和删除的操作一端)浮动;
③进栈(Push):插入一个元素 || 出栈(Pop):删除一个栈顶元素

使用STL容器Stack要求:

头文件:#include<stack>
变量的定义:stack <TYPE> StackName//TYPE元素类型,StackName栈名

STL容器Stacl成员函数

bool empty()栈为空返回trueor,返回false
void pop()删除栈顶元素,即出栈
void push(const TYPE &val) 将新元素val进栈,使其成为栈顶的第一个元素
TYPE &top()查看当前栈顶元素
size_type size()返回堆栈中的元素数目
eg:
stack <int> s;
s.push(1);//进栈
s.push(2);
cout<<"Top:"<<s.top()<<endl;//返回栈顶元素
cout<<"Size:"<<s.size()<<emdl;//返回堆栈中的元素数目
s.pop();//删除栈顶元素
cout<<"Size:"<<s.size()<<emdl;//返回堆栈中的元素数目
if(s.empty()) cout<<"Is empty"<<endl;//判断堆栈是否为空
	else cout<<"Is not empty"<<endl;

2、向量(vector、动态数组)

Vector相当于数组,可以不先指定数组大小,且能自动扩展。
创建后,内存会自动分配一块连续的内存空间进行数据储存。
当存储的数据超过分配的空间时,vector会重新分配一块内存,并将原内存快销毁释放(调用析构函数)。

使用STL容器vector要求:

头文件:#include<vector>

Vector的构造函数和析构函数

vector<TYPE> c 产生一个空Vector
vector<TYPE> c(n)生成一个大小为n的Vector
vector<TYPE>c(n, elem)生成一个大小为n的Vector每个值都为elem
c.~vector<TYPE>()销毁所有元素,并释放内存

STL容器Vector成员函数

c.back() 传回最后一个数据
c.begin() 传回迭代器的第一个数据地址
c,end()指向迭代器的最后一个数据地址
c.clear()移除容器中的所有元素
c.empty()判断容器是否为空
c.pop_back()删除最后一个数据
c.push_back(elem)在尾部加一个数据elem
c1.swap(c2)/swap(c1, c2)交换c1,c2元素
c.size()返回当前元素数量
c.capacity()返回容器 可以容纳的元素数量

下标访问容器Vector中数据:

int n;
cin>>n;
vector<int>a(n);
for(int i = 0; i < n; i++)
	cin>>a[i];//数组形式表示
a.push_back(10);//数组后追加数据
for(int i = 0; i <= n; i++)
	cout<<a[i]<<" ";
cout<<a.size()<<endl;//实际元素个数

迭代器访问:

int n;
cin>>n;
vector<int>a;
int x;
for(int i = 0; i < n; i++){
	cin>>x;
	a.push_back(x);
}
for(int i = 0; i < n; i++)
	cout<<a[i]<<" ";
cout<<endl;
vector<int>::iterator p;//定义迭代器(类似指针)
for(p = a.begin(); p! = a.end(); ++p)
	cout<<*p<<" ";
cout<<endl;
cout<<a.size()<<endl;
a.pop_back();//删除尾部元素
cout<<a.size()<<endl;
a.clear();//清除所有元素
cout<<a.size()<<endl;

你可能感兴趣的:(蓝桥杯,c++,蓝桥杯,数据结构)