博瑞博客

青春是一个充满活力的季节,即便是我们失去了天使的翅膀,只要我们还有一颗青春的心,那么我们的生活依然能够如阳光般灿烂!......
推荐阅读站长精心推荐阅读
现在位置:首页 >
  • C++ std

    C++ std

    C/C++  2-4  72浏览  0评论  

    C++ 标准库(std 库)是 C++ 语言的核心组成部分,提供了丰富的功能,包括容器、算法、字符串处理、输入输出、多线程支持等。std 是标准库的命名空间,所有标准库的类和函数都定义在这个命名空间中。 以下是 C++ 标准库的主要组成部分和功能的详细介绍: 1. 容器(Containers) 容器是用于存储数据的类模板,提供了多种数据结构。 顺序容器 std::vector:动态数组,支持快速随机访问。 std::array:固定大小的数组,封装了 C 风格数组。 std::deque:双端队列,支持快速头尾插入和删除。 std::list:双向链表,支持高效插入和删除。 std::forward_list:单向链表,内存占用更小。 关联容器 std::set:有序集合,元素唯一。 std::multiset:有序集合,允许重复元素。 std::map:有序键值对,键唯一。 std::multimap:有序键值对,允许重复键。 无序容器(C++11 引入) std::unordered_set:哈希集合,元素唯一。 std::unordered_multiset:哈希集合,允许重复元素。 std::unordered_map:哈希键值对,键唯一。 std::unordered_multimap:哈希键值对,允许重复键。 2. 算法(Algorithms) 算法是用于操作容器中数据的函数模板,定义在 <algorithm> 头文件中。 常用算法 std::sort:对容器中的元素进行排序。 std::find:查找容器中的元素。 std::copy:复制容器中的元素。 std::transform:对容器中的元素进行转换。 std::accumulate:计算容器中元素的累加值。 std::for_each:对容器中的每个元素执行操作。 示例 #include <algorithm> #include <vector> #include <iostream> int main() { std::vector<int> vec = {5, 3, 1, 4, 2}; std::sort(vec.begin(), vec.end()); // 排序 for (int x : vec) { std::cout << x << " "; // 输出:1 2 3 4 5 } return 0; } 3. 字符串处理(Strings) std::string 是用于处理字符串的类,定义在 <string> 头文件中。 常用功能 std::string:表示一个字符串。 std::wstring:表示一个宽字符字符串。 std::to_string:将数值转换为字符串。 std::stoi、std::stol、std::stoll:将字符串转换为整数。 std::stof、std::stod、std::stold:将字符串转换为浮点数。 示例 #include <string> #include <iostream> int main() { std::string str = "Hello, World!"; std::cout << str.substr(0, 5) << std::endl; // 输出:Hello return 0; } 4. 输入输出(Input/Output) C++ 标准库提供了强大的输入输出功能,定义在 <iostream> 头文件中。 常用类 std::cin:标准输入流。 std::cout:标准输出流。 std::cerr:标准错误流。 std::ifstream:文件输入流。 std::ofstream:文件输出流。 std::stringstream:字符串流。 示例 #include <iostream> #include <fstream> int main() { std::ofstream file("test.txt"); file << "Hello, File!" << std::endl; file.close(); std::ifstream inFile("test.txt"); std::string line; std::getline(inFile, line); std::cout << line << std::endl; // 输出:Hello, File! return 0; } 5. 智能指针(Smart Pointers) 智能指针用于自动管理动态内存,定义在 <memory> 头文件中。 常用智能指针 std::unique_ptr:独占所有权的智能指针。 std::shared_ptr:共享所有权的智能指针。 std::weak_ptr:弱引用智能指针,用于解决循环引用问题。 示例 #include <memory> #include <iostream> int main() { std::unique_ptr<int> ptr = std::make_unique<int>(42); std::cout << *ptr << std::endl; // 输出:42 return 0; } 6. 多线程支持(Multithreading) C++11 引入了多线程支持,定义在 <thread> 头文件中。 常用类 std::thread:表示一个线程。 std::mutex:互斥锁,用于线程同步。 std::lock_guard:RAII 风格的互斥锁管理。 std::condition_variable:条件变量,用于线程间通信。 示例 #include <thread> #include <iostream> void task() { std::cout << "Hello from thread!" << std::endl; } int main() { std::thread t(task); t.join(); // 等待线程结束 return 0; } 7. 时间处理(Chrono) std::chrono 是用于时间处理的库,定义在 <chrono> 头文件中。 常用功能 std::chrono::system_clock:系统时钟。 std::chrono::steady_clock:稳定时钟。 std::chrono::duration:表示时间间隔。 std::chrono::time_point:表示时间点。 示例 #include <chrono> #include <thread> #include <iostream> int main() { auto start = std::chrono::steady_clock::now(); std::this_thread::sleep_for(std::chrono::seconds(1)); auto end = std::chrono::steady_clock::now(); std::cout << "Elapsed time: " << std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() << " ms" << std::endl; return 0; } 8. 其他功能 std::function:用于存储可调用对象(函数、Lambda 表达式等)。 std::tuple:用于存储多个不同类型的值。 std::optional(C++17):表示一个可能不存在的值。 std::variant(C++17):表示一个可以存储多种类型的值。 总结 C++ 标准库(std 库)提供了丰富的功能,涵盖了容器、算法、字符串处理、输入输出、智能指针、多线程、时间处理等方面。它是 C++ 开发中不可或缺的工具,能够显著提高开发效率和代码质量。 如果你对某个部分特别感兴趣,可以告诉我,我会提供更详细的解释和示例! 😊