C++11标准库中有哪些新特性或改进?请举例说明。
C++11标准库引入了许多新特性和改进,下面是一些重要的新特性和改进:
- 智能指针 (
<memory>
):- 引入了
std::unique_ptr
,std::shared_ptr
, 和std::weak_ptr
用于更安全和便捷的内存管理。
- 引入了
- 线程支持库 (
<thread>
,<mutex>
,<condition_variable>
,<future>
):- 提供了对多线程编程的支持,包括线程的创建和管理(
std::thread
), 互斥锁(std::mutex
), 条件变量(std::condition_variable
), 以及未来和承诺(std::future
和std::promise
)等。
- 提供了对多线程编程的支持,包括线程的创建和管理(
- 容器改进:
- 引入了新的容器如
std::array
和std::unordered_map
,std::unordered_set
(基于哈希表的无序容器)。 - 容器现在支持范围构造函数和范围
insert
方法。
- 引入了新的容器如
- 正则表达式库 (
<regex>
):- 提供了对正则表达式的支持,包括正则表达式的匹配、搜索和替换功能。
- 随机数生成库 (
<random>
):- 提供了更强大和灵活的随机数生成器和分布。
- 时间库改进 (
<chrono>
):- 引入了新的时间库,用于表示时间点、时间段以及时钟。
- 元组 (
<tuple>
):- 引入了
std::tuple
,用于存储固定数量的异质元素。
- 引入了
- Lambda表达式支持:
- 标准库的算法现在可以和lambda表达式更好地配合使用。
- 类型特性 (
<type_traits>
):- 提供了一系列用于编译时类型信息查询和操作的工具。
- 移动语义支持:
- 容器和其他标准库组件增加了对移动语义的支持,提高了性能。
示例:
使用std::unordered_map
创建一个基于哈希表的无序映射:
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> wordCount = {
{"hello", 1},
{"world", 2}
};
wordCount["example"] = 3;
for (const auto& pair : wordCount) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
这只是C++11标准库中新特性和改进的一小部分,C++11标准库的改进和新特性极大地提高了C++的表达力和性能,并简化了许多常见编程任务的处理。