C++ 高级教程学习笔记
本文档为C++高级教程的学习笔记,主要介绍了C++在高级应用场景下的一些特性和技巧。
内存管理
C++提供了灵活的内存管理机制,可以使用new和delete操作符手动管理内存,也可以使用智能指针等工具帮助自动管理内存。以下是一个使用智能指针的示例:
c++Copy Code#include <memory>
#include <iostream>
int main() {
std::shared_ptr<int> ptr1(new int(5));
std::shared_ptr<int> ptr2 = ptr1;
std::cout << "ptr1: " << *ptr1 << std::endl;
std::cout << "ptr2: " << *ptr2 << std::endl;
*ptr1 = 10;
std::cout << "ptr1: " << *ptr1 << std::endl;
std::cout << "ptr2: " << *ptr2 << std::endl;
return 0;
}
多线程编程
C++提供了std::thread等多线程编程工具,可以方便地实现多线程应用。以下是一个简单的示例:
c++Copy Code#include <thread>
#include <iostream>
void func() {
std::cout << "Thread started" << std::endl;
// 线程操作
std::cout << "Thread ended" << std::endl;
}
int main() {
std::thread t(func);
t.join();
return 0;
}
泛型编程
C++的模板特性可以实现泛型编程,即以一种通用的方式编写代码,同时支持多种数据类型。以下是一个使用模板函数的示例:
c++Copy Code#include <iostream>
template<typename T>
T max(T a, T b) {
return a > b ? a : b;
}
int main() {
std::cout << "max(3, 4): " << max(3, 4) << std::endl;
std::cout << "max(3.1, 4.5): " << max(3.1, 4.5) << std::endl;
return 0;
}
STL容器
C++提供了丰富的STL容器,包括vector、list、map等,可以方便地管理数据结构。以下是一个使用vector和map的示例:
c++Copy Code#include <vector>
#include <map>
#include <iostream>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
for (auto i : v) {
std::cout << i << " ";
}
std::cout << std::endl;
std::map<std::string, int> m = {
{"one", 1},
{"two", 2},
{"three", 3}
};
for (auto p : m) {
std::cout << p.first << ": " << p.second << std::endl;
}
return 0;
}
总结
本文介绍了C++高级应用中的一些特性和技巧,包括内存管理、多线程编程、泛型编程和STL容器。这些特性和技巧能够使C++在高级应用场景下更加灵活和高效。