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++在高级应用场景下更加灵活和高效。