C++ 作为一门底层高性能语言,拥有广泛的应用领域,从系统开发、游戏引擎、图形图像、嵌入式到人工智能等,都能看到它的身影。本文为你整理并实操了 20 个 必收藏的经典 C++ 案例,帮助你提升实战水平与编程逻辑。
一、基础语法与算法类案例
案例1:斐波那契数列(递归 + 动态规划)
int Fibonacci(int n) {
if (n <= 1) return n;
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
案例2:判断素数
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; ++i)
if (n % i == 0) return false;
return true;
}
案例3:冒泡排序实现
void bubbleSort(vector<int>& arr) {
for (int i = 0; i < arr.size() - 1; ++i)
for (int j = 0; j < arr.size() - 1 - i; ++j)
if (arr[j] > arr[j + 1])
swap(arr[j], arr[j + 1]);
}
案例4:字符串反转
void reverseString(string &s) {
int l = 0, r = s.size() - 1;
while (l < r) swap(s[l++], s[r--]);
}
二、数据结构类经典案例
案例5:链表反转
struct Node {
int data;
Node* next;
};
Node* reverse(Node* head) {
Node* prev = nullptr;
while (head) {
Node* next = head->next;
head->next = prev;
prev = head;
head = next;
}
return prev;
}
案例6:栈的实现
class Stack {
private:
vector<int> data;
public:
void push(int x) { data.push_back(x); }
void pop() { if (!data.empty()) data.pop_back(); }
int top() { return data.back(); }
bool empty() { return data.empty(); }
};
案例7:二叉树前序遍历(递归)
void preorder(TreeNode* root) {
if (!root) return;
cout << root->val << " ";
preorder(root->left);
preorder(root->right);
}
三、实用工具类案例
案例8:日期格式化
string getCurrentDate() {
time_t now = time(0);
tm *ltm = localtime(&now);
char buf[20];
strftime(buf, sizeof(buf), "%Y-%m-%d", ltm);
return string(buf);
}
案例9:简单日志系统
void log(string msg) {
ofstream out("log.txt", ios::app);
out << getCurrentDate() << " - " << msg << endl;
}
案例10:读取配置文件
unordered_map<string, string> readConfig(string filename) {
unordered_map<string, string> config;
ifstream in(filename);
string key, value;
while (in >> key >> value)
config[key] = value;
return config;
}
四、项目实战类案例
案例11:猜数字小游戏
void guessNumber() {
srand(time(0));
int number = rand() % 100 + 1, guess;
do {
cout << "Enter guess: ";
cin >> guess;
if (guess < number) cout << "Too low!\n";
else if (guess > number) cout << "Too high!\n";
else cout << "Correct!\n";
} while (guess != number);
}
案例12:命令行计算器
double calculator(double a, double b, char op) {
switch(op) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': return b != 0 ? a / b : 0;
default: return 0;
}
}
案例13:文件行数统计器
int countLines(string filename) {
ifstream in(filename);
return count(istreambuf_iterator<char>(in),
istreambuf_iterator<char>(), '\n');
}
五、系统与内存管理类案例
案例14:动态分配二维数组
int** createMatrix(int rows, int cols) {
int** mat = new int*[rows];
for (int i = 0; i < rows; ++i)
mat[i] = new int[cols];
return mat;
}
案例15:模拟内存泄露检测
void memoryLeakExample() {
int* p = new int[100]; // 未 delete[],存在内存泄漏
}
六、网络编程类基础案例
案例16:简单Socket客户端(Linux)
int sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(8080);
inet_pton(AF_INET, "127.0.0.1", &server.sin_addr);
connect(sock, (struct sockaddr*)&server, sizeof(server));
send(sock, "Hello", 5, 0);
七、STL与泛型编程类案例
案例17:模板函数排序
template<typename T>
void sortArray(vector<T>& arr) {
sort(arr.begin(), arr.end());
}
案例18:优先队列使用
priority_queue<int> pq;
pq.push(10);
pq.push(5);
pq.push(20);
// 输出最大元素 20
八、C++11/14新特性案例
案例19:智能指针示例
#include <memory>
void useSmartPtr() {
shared_ptr<int> sp = make_shared<int>(10);
cout << *sp << endl;
}
案例20:lambda 表达式 + std::function
auto add = [](int a, int b) { return a + b; };
cout << add(5, 6); // 输出 11
总结
以上 20 个 C++ 实战案例涵盖了从基础语法、数据结构、系统开发、文件操作、STL 应用,到现代 C++ 的典型场景,每个案例都可直接运行、调试和扩展,适合用于:
- 编程学习入门
- 技术面试准备
- 项目实战参考
- 算法训练强化