博瑞博客

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

C++ std

江湖    C/C++    2025-2-4    16    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::stoistd::stolstd::stoll:将字符串转换为整数。
  • std::stofstd::stodstd::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++ 开发中不可或缺的工具,能够显著提高开发效率和代码质量。

如果你对某个部分特别感兴趣,可以告诉我,我会提供更详细的解释和示例! 😊

评论一下分享本文赞助博瑞

赞助博瑞X

扫码赞助博瑞
联系站长
博瑞博客
挤眼亲亲咆哮开心想想可怜糗大了委屈哈哈小声点右哼哼左哼哼疑问坏笑赚钱啦悲伤耍酷勾引厉害握手耶嘻嘻害羞鼓掌馋嘴抓狂抱抱围观威武给力
提交评论

清空信息
关闭评论