请写出你知道的stl容器
时间: 2024-03-30 22:36:23 浏览: 24
好的,我可以列举一些STL容器,包括:
1. vector:动态数组,支持快速随机访问和在末尾插入或删除元素。
2. list:双向链表,支持快速插入或删除元素,但不支持随机访问。
3. deque:双端队列,支持在两端快速插入或删除元素,也支持随机访问。
4. set:集合,按照元素的键值自动排序,不允许重复元素。
5. map:映射,按照元素的键值自动排序,支持键值对的插入、删除和查找操作。
6. unordered_set:无序集合,不按照元素的键值排序,不允许重复元素。
7. unordered_map:无序映射,不按照元素的键值排序,支持键值对的插入、删除和查找操作。
8. stack:栈,先进后出,支持压入和弹出操作。
9. queue:队列,先进先出,支持入队和出队操作。
10. priority_queue:优先队列,按照元素的优先级排序,支持插入和弹出操作。
相关问题
用c++写一个包含StL容器的游戏
好的,我可以给您提供一个简单的示例,这个游戏是一个猜数字游戏,玩家需要猜出随机生成的数字。
首先,我们需要包含必要的头文件:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
#include <cstdlib>
```
然后,我们需要定义一个函数来生成随机数字。在这个函数中,我们使用了 `srand` 函数来设置随机数生成器的种子,以便每次运行程序时都能生成不同的随机数。
```c++
int generateRandomNumber(int min, int max) {
srand(time(NULL));
return (rand() % (max - min + 1)) + min;
}
```
接下来,我们需要定义一个函数来处理玩家的猜测并返回结果。在这个函数中,我们使用了 `std::vector` 来存储之前的猜测,并使用 `std::find` 函数来检查玩家是否已经猜过这个数字。如果玩家猜对了,函数将返回一个 `true` 值,否则返回一个 `false` 值。
```c++
bool handleGuess(int guess, int number, std::vector<int>& guesses) {
if (std::find(guesses.begin(), guesses.end(), guess) != guesses.end()) {
std::cout << "You've already guessed that number. Try again.\n";
return false;
}
guesses.push_back(guess);
if (guess == number) {
std::cout << "Congratulations! You guessed the number.\n";
return true;
}
else if (guess < number) {
std::cout << "Your guess is too low. Guess again.\n";
return false;
}
else {
std::cout << "Your guess is too high. Guess again.\n";
return false;
}
}
```
最后,我们需要定义 `main` 函数来运行游戏。在 `main` 函数中,我们首先生成一个随机数字,然后使用一个循环来让玩家猜测数字,直到玩家猜中为止。
```c++
int main() {
int min = 1;
int max = 100;
int number = generateRandomNumber(min, max);
std::vector<int> guesses;
std::cout << "Welcome to the Number Guessing Game!\n";
while (true) {
std::cout << "Guess a number between " << min << " and " << max << ": ";
int guess;
std::cin >> guess;
if (handleGuess(guess, number, guesses)) {
break;
}
}
return 0;
}
```
完整代码如下:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
#include <cstdlib>
int generateRandomNumber(int min, int max) {
srand(time(NULL));
return (rand() % (max - min + 1)) + min;
}
bool handleGuess(int guess, int number, std::vector<int>& guesses) {
if (std::find(guesses.begin(), guesses.end(), guess) != guesses.end()) {
std::cout << "You've already guessed that number. Try again.\n";
return false;
}
guesses.push_back(guess);
if (guess == number) {
std::cout << "Congratulations! You guessed the number.\n";
return true;
}
else if (guess < number) {
std::cout << "Your guess is too low. Guess again.\n";
return false;
}
else {
std::cout << "Your guess is too high. Guess again.\n";
return false;
}
}
int main() {
int min = 1;
int max = 100;
int number = generateRandomNumber(min, max);
std::vector<int> guesses;
std::cout << "Welcome to the Number Guessing Game!\n";
while (true) {
std::cout << "Guess a number between " << min << " and " << max << ": ";
int guess;
std::cin >> guess;
if (handleGuess(guess, number, guesses)) {
break;
}
}
return 0;
}
```
不可以使用stl容器,帮我写出完整代码包括主程序
好的,以下是一个简单的例子,演示如何使用数组来实现栈的基本操作:
```c++
#include <iostream>
using namespace std;
// 定义栈的大小
#define MAX_SIZE 100
class Stack {
private:
int top; // 栈顶指针
int data[MAX_SIZE]; // 栈的数组
public:
Stack() {
top = -1; // 初始化栈顶指针
}
// 判断栈是否为空
bool isEmpty() {
return top == -1;
}
// 判断栈是否已满
bool isFull() {
return top == MAX_SIZE - 1;
}
// 入栈
void push(int value) {
if (isFull()) {
cout << "Stack overflow!" << endl;
return;
}
data[++top] = value;
}
// 出栈
int pop() {
if (isEmpty()) {
cout << "Stack underflow!" << endl;
return -1;
}
return data[top--];
}
// 获取栈顶元素
int peek() {
if (isEmpty()) {
cout << "Stack is empty!" << endl;
return -1;
}
return data[top];
}
// 打印栈中的所有元素
void print() {
if (isEmpty()) {
cout << "Stack is empty!" << endl;
return;
}
cout << "Stack elements: ";
for (int i = 0; i <= top; i++) {
cout << data[i] << " ";
}
cout << endl;
}
};
int main() {
Stack s;
// 将元素 1、2、3 入栈
s.push(1);
s.push(2);
s.push(3);
// 输出栈顶元素
cout << "Top element: " << s.peek() << endl;
// 出栈
cout << "Pop element: " << s.pop() << endl;
// 打印栈中所有元素
s.print();
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)