今天发现了一个有用的容器,那就是向量,用bool类型的向量简直不要太方便,尤其是对于二极管问题,比如B2094
然后用向量模拟栈也比较方便
点击查看代码
#include <iostream>
#include <vector>
using namespace std;
class Stack {
private:
vector<int> elements;
public:
// 将元素压入栈顶
void push(int element) {
elements.push_back(element);
}
// 弹出栈顶元素
void pop() {
if (!elements.empty()) {
elements.pop_back();
} else {
cout << "Stack is empty. Cannot pop." << endl;
}
}
// 获取栈顶元素
int top() {
if (!elements.empty()) {
return elements.back();
} else {
cout << "Stack is empty. No top element." << endl;
return -1; // 返回一个默认值
}
}
// 检查栈是否为空
bool isEmpty() {
return elements.empty();
}
// 获取栈中元素的数量
int size() {
return elements.size();
}
};
int main() {
Stack myStack;
// 向栈中压入一些元素
myStack.push(10);
myStack.push(20);
myStack.push(30);
// 输出栈顶元素
cout << "Top element: " << myStack.top() << endl;
// 弹出栈顶元素
myStack.pop();
// 输出栈中元素数量
cout << "Stack size: " << myStack.size() << endl;
// 检查栈是否为空
cout << "Is stack empty? " << (myStack.isEmpty() ? "Yes" : "No") << endl;
return 0;
}
向量:
求和:
1.遍历求和
based-for循环(foreach循环)
语法形式:for(element-declaration:array){balabalabala}
element-declaration是定义的一个新的临时变量,可以是int num这种,然后array是一个数组或者是容器,在循环中,会遍历array中的每一个元素,将array的每一个值赋给num(以element-declaration是int num为例),至于赋给它之后干什么,就需要{}里面的内容了
2.函数求和
库头是#include
累加结果类型(比如说是int)accumulate(迭代器类型 起始位置,迭代器类型 终止位置,初始积累值);
vector
int accumulate(num.begin(),num.end(),0);