![c++11新特性 图片[1]-c++11新特性-不念博客](https://www.bunian.cn/wp-content/uploads/2023/12/image-67.png)
- 自动类型推导(Auto):允许编译器推导变量的类型,使代码更加简洁。
auto x = 5; // x的类型将被推导为intauto x = 5; // x的类型将被推导为intauto x = 5; // x的类型将被推导为int
- 范围-based for 循环:简化了对容器元素的遍历。
std::vector<int> numbers = {1, 2, 3, 4, 5};for (const auto& num : numbers) {// 使用num}std::vector<int> numbers = {1, 2, 3, 4, 5}; for (const auto& num : numbers) { // 使用num }std::vector<int> numbers = {1, 2, 3, 4, 5}; for (const auto& num : numbers) { // 使用num }
- 智能指针:引入了std::shared_ptr和std::unique_ptr等智能指针,用于管理动态分配的内存,帮助防止内存泄漏。
std::shared_ptr<int> sharedPtr = std::make_shared<int>(42);std::shared_ptr<int> sharedPtr = std::make_shared<int>(42);std::shared_ptr<int> sharedPtr = std::make_shared<int>(42);
- Lambda 表达式:允许在函数内部定义匿名函数,提高代码可读性和灵活性。
auto add = [](int a, int b) { return a + b; };auto add = [](int a, int b) { return a + b; };auto add = [](int a, int b) { return a + b; };
- nullptr:引入了空指针常量nullptr,用于替代传统的空指针NULL。
int* ptr = nullptr;int* ptr = nullptr;int* ptr = nullptr;
- 强制类型转换(Type Casting):引入了static_cast、dynamic_cast、const_cast、reinterpret_cast等更安全和灵活的类型转换操作符。
double x = 3.14;int y = static_cast<int>(x);double x = 3.14; int y = static_cast<int>(x);double x = 3.14; int y = static_cast<int>(x);
- 右值引用和移动语义:支持通过右值引用实现移动语义,提高了对临时对象的处理效率。
std::vector<int> getVector() {// 返回一个临时vectorreturn std::vector<int>{1, 2, 3};}std::vector<int> numbers = getVector(); // 使用移动语义std::vector<int> getVector() { // 返回一个临时vector return std::vector<int>{1, 2, 3}; } std::vector<int> numbers = getVector(); // 使用移动语义std::vector<int> getVector() { // 返回一个临时vector return std::vector<int>{1, 2, 3}; } std::vector<int> numbers = getVector(); // 使用移动语义
- 新的容器和算法:引入了新的容器,如std::unordered_map、std::unordered_set,以及一些新的算法。
std::unordered_map<int, std::string> myMap = {{1, "one"}, {2, "two"}};std::unordered_map<int, std::string> myMap = {{1, "one"}, {2, "two"}};std::unordered_map<int, std::string> myMap = {{1, "one"}, {2, "two"}};
- 线程支持(std::thread):提供了原生的多线程支持,使得并发编程更加方便。
#include <thread>void myFunction() {// 线程执行的代码}int main() {std::thread t(myFunction);t.join(); // 等待线程结束return 0;}#include <thread> void myFunction() { // 线程执行的代码 } int main() { std::thread t(myFunction); t.join(); // 等待线程结束 return 0; }#include <thread> void myFunction() { // 线程执行的代码 } int main() { std::thread t(myFunction); t.join(); // 等待线程结束 return 0; }
© 版权声明
本站文章由不念博客原创,未经允许严禁转载!
THE END