目录
队列
1.queue
#include <queue>
using namespace std;
int main() {
queue<int> q;
// 插入元素到队列
q.push(10);
q.push(20);
// 访问队列的第一个元素
cout << q.front() <<endl;
// 删除队列的第一个元素
q.pop();
// 访问队列的第一个元素和最后一个元素
cout << q.front() << endl;
cout << q.back() << endl;
// 检查队列是否为空和队列的大小
if (q.empty()) {
cout << "Queue is empty." << endl;
cout << q.size() << endl;
return 0;
}
在使用队列时, queue<Student> q; struct定义的Student类也可作为类型
2. stack
#include <stack>
using namespace std;
int main() {
stack<int> s;
// 压入元素到栈顶
s.push(10);
s.push(20);
// 访问栈顶元素
cout << s.top() << endl;
// 弹出栈顶元素
s.pop();
// 检查栈是否为空和栈的大小
s.empty();
s.size();
return 0;
}
3.对大数的处理
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// 大数相加函数
string addBigNumbers(string num1, string num2) {
string result; // 存储计算结果的字符串
int carry = 0; // 进位值,默认为0
int i = num1.length() - 1; // num1 的索引,从末尾开始
int j = num2.length() - 1; // num2 的索引,从末尾开始
// 从末尾开始逐位相加
while (i >= 0 || j >= 0 || carry > 0) {
int digit1;
if (i >= 0) {
digit1 = num1[i] - '0'; // 取 num1 当前位的数字
} else {
digit1 = 0; // 如果已经超出 num1 的长度,则默认为0
}
int digit2;
if (j >= 0) {
digit2 = num2[j] - '0'; // 取 num2 当前位的数字
} else {
digit2 = 0; // 如果已经超出 num2 的长度,则默认为0
}
int sum = digit1 + digit2 + carry; // 当前位的和,包括进位值
carry = sum / 10; // 计算进位值
int digit = sum % 10; // 当前位的结果
result.push_back(digit + '0'); // 将当前位的结果追加到结果字符串中
i--; // 移动 num1 的索引到下一位
j--; // 移动 num2 的索引到下一位
}
reverse(result.begin(), result.end()); // 反转结果字符串,得到正确的顺序
return result; // 返回计算结果
}
int main() {
string num1 = "12345678901234567890";
string num2 = "98765432109876543210";
string sum = addBigNumbers(num1, num2); // 调用大数相加函数计算两个大数的和
cout << "Sum: " << sum << endl; // 输出计算结果
return 0;
}
4.指针传递
#include <iostream>
using namespace std;
void Swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
int main(){
int a=2;
int b=3;
Swap(&a,&b);
cout << a << ' ' << b;
return 0;
}
//引用传递
#include <iostream>
using namespace std;
void Swap(int &a, int &b){
int temp = a;
a = b;
b = temp;
}
int main(){
int a=2;
int b=3;
Swap(a,b);
cout << a << ' ' << b;
return 0;
}