【c++】vector queue stack的使用

文章目录

  • 向量vector
  • 队列queue
  • 栈stack


向量vector

不同于一般数组,它可以改变其大小的线性序列容器,无需定义大小。
具体使用:

  1. 引入头文件: #include
  2. 定义变量: vector<类型> 变量名;
  3. 可以像数组一样通过下标访问数据: 变量名[i]
  4. 已经封装可以直接调用的方法:
  • 变量名.empty() 没有数据返回true,有false
  • 变量名.size() 返回容器元素个数
  • 变量名.push_back(数据) 向尾部插入数据
  • 变量名.insert(变量名.begin()+i,数据) 向下标为i的位置插入数据,不是第i
  • 变量名.insert(变量名.begin()+i,个数,数据) 向下标为i的位置插入多个相同的数据
  • 变量名..pop_back() 删除尾部数据
  • 变量名.erase(变量名.begin()+i) 删除下标为i的数据
  • 变量名.erase(变量名.begin()+i,变量名.begin()+j) 删除下标ij的数据
  • 变量名.clear() 清空数据
#include 
#include 

using namespace std;

int main() {
	// 定义
	vector<int> data;
	// 加入数据
	for (int i = 0; i < 5; i++)
	{
		// 向尾部插入数据
		data.push_back(i);
	}
	// begin()+i 向下标为i的位置插入数据 (注意不是第i个)
	// 插入一个数据:(下标,数据)
	data.insert(data.begin(), 3); //[3,0,1,2,3,4]
	// 插入多个相同的数据:(下标,个数,数据)
	data.insert(data.begin() + 2, 3, 8); //[3,0,8,8,8,1,2,3,4]
	// 删除数据:
	// 尾部
	data.pop_back(); //[3,0,8,8,8,1,2,3]
	// 某个数据 
	data.erase(data.begin()+1); // [3,8,8,8,1,2,3]
	// 某范围数据
	data.erase(data.begin() + 3, data.end()); // [3,8,8]
	for (int i = 0; i < data.size(); i++)
	{
		cout << data[i] << " ";
	}
	cout << endl;

	// 迭代器 访问数据
	vector<int>::iterator it;
	for ( it = data.begin(); it != data.end() ;  it++)
	{
		cout << *it << " ";
	}
	cout << endl;
	data.clear();
	return 0;
}

队列queue

先进先出
具体使用:

  1. 引入头文件:#include
  2. 定义变量: queue<类型> 变量名;
  3. 已经封装可以直接调用的方法:
  • 变量名.empty() 没有数据返回true,有false
  • 变量名.size() 返回队列元素个数
  • 变量名.push(数据) 入队,添加元素
  • 变量名.pop() 出队,删除元素
  • 变量名.front() 访问队首元素
  • 变量名.back() 访问队尾元素
#include 
#include 

using namespace std;

int main() {
	// 定义
	queue<int> data;
	// 入队
	for (int i = 0; i < 5; i++)
	{
		data.push(i); // [4,3,2,1,0]
	}
	// 访问队首 队尾
	cout << data.front() << " " << data.back() << endl;   // 0   4
	// 出队
	while (!data.empty()) {
		data.pop();
	}
	
	cout << data.size() << endl;

	return 0;
}

栈stack

先进后出
具体使用:

  1. 引入头文件:#include
  2. 定义变量: stack<类型> 变量名;
  3. 已经封装可以直接调用的方法:
  • 变量名.empty() 没有数据返回true,有false
  • 变量名.size() 返回栈元素个数
  • 变量名.push(数据) 入栈,添加元素
  • 变量名.pop() 出栈,删除元素
  • 变量名.top() 访问栈顶元素
#include 
#include 

using namespace std;

int main() {
	// 定义
	stack<int> data;
	// 入栈
	for (int i = 0; i < 5; i++)
	{
		data.push(i); 
	}
	// 出队
	while (!data.empty()) {
		cout << data.top() << endl;
		data.pop();
	}
	
	cout << data.size() << endl;

	return 0;
}

你可能感兴趣的:(算法,c++,数据结构,算法)