C++标准库函数swap的用法

本文展示了一个使用 C++ 标准库中的 std::swap 函数来交换两个整数变量 a 和 b 的简单示例。通过包含 iostream 和 algorithm 头文件,并利用 std 命名空间中的 swap 函数,该程序成功地实现了变量值的交换并输出了交换后的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#include <algorithm>
using namespace std;
int main( )
{
    int a = 10;
    int b = 5;
    std::swap( a, b );
    cout << "a = " << a << ", b = " << b << endl;
} 
<think>好的,我现在需要回答用户的问题:“列出一下C++常用标准库函数”。首先,我需要明确用户的需求是什么。用户可能刚开始学习C++,或者希望复习一些常用的标准库函数,以便在编程时查阅。接下来,我要考虑如何组织这些信息,使其既全面又易于理解。 首先,C++标准库非常庞大,涵盖了很多头文件和功能模块。常用的标准库函数可以分为几大类,比如输入输出、字符串处理、容器操作、算法、数学函数、时间处理等等。为了不让用户感到信息过载,我需要挑选每个类别中最常用的一些函数,并简要说明它们的用途和示例。 输入输出部分,iostream是最基础的,比如cin和cout,还有getline用于读取整行输入。字符串处理方面,string头文件中的函数,如length、append、find等,这些是处理字符串时经常用到的。容器类比如vector、map、set,它们的常用操作如push_back、insert、find也需要提到。 算法库algorithm中的sort、find、reverse等函数非常实用,特别是sort函数在排序时经常使用。数学函数如sqrt、pow、abs等在cmath头文件中,这些也是常用的。时间处理方面,chrono库中的时间点和持续时间可能需要简要介绍。 另外,用户可能对C++11及以后的新特性感兴趣,比如智能指针(unique_ptr、shared_ptr)和Lambda表达式,这些虽然不是函数,但属于标准库的重要组成部分,可以适当提及。不过要避免过于深入细节,保持回答的简洁性。 需要注意的是,每个函数要给出函数原型或示例,并说明其所在的头文件,这样用户在使用时能正确包含头文件。同时,要提醒用户某些函数可能存在的注意事项,比如字符串操作中的越界问题,或者算法函数需要迭代器作为参数等。 在组织内容时,可以采用分点列表的方式,每个大类作为一个小标题,下面列出具体的函数,这样结构清晰,用户查找起来也方便。同时,示例代码使用代码块格式,帮助用户理解函数的具体用法。 最后,要检查是否有遗漏的重要函数,比如动态内存管理的new和delete(虽然严格来说是运算符,但常与标准库一起使用),或者文件流相关的fstream中的函数。不过根据用户的要求,可能重点在常用函数,文件操作可以简要提及,或者放在扩展部分。 总结一下,回答的结构应该是先分类,然后在每个类别下列出常用函数,每个函数给出简要说明和示例。同时,注意使用中文,保持语言简洁明了,符合用户的理解水平。</think>以下是C++常用标准库函数的分类整理及简要说明: --- ### 一、输入输出 `<iostream>` 1. **cin/cout** 基础输入输出流对象 ```cpp std::cout << "Hello" << std::endl; // 输出 int x; std::cin >> x; // 输入 ``` 2. **getline** 读取整行字符串 ```cpp std::string s; std::getline(std::cin, s); ``` --- ### 二、字符串处理 `<string>` 1. **length() / size()** 获取字符串长度 ```cpp std::string s = "abc"; int len = s.length(); // 3 ``` 2. **append()** 字符串拼接 ```cpp s.append("def"); // s = "abcdef" ``` 3. **find()** 查找子字符串 ```cpp size_t pos = s.find("cd"); // 返回索引2 ``` 4. **substr()** 截取子字符串 ```cpp std::string sub = s.substr(1, 3); // "bcd" ``` --- ### 三、容器操作 #### 1. Vector `<vector>` - **push_back()**:尾部插入元素 ```cpp std::vector<int> v; v.push_back(10); ``` - **size()**:获取元素数量 - **at()**:安全访问元素 ```cpp int x = v.at(0); // 越界抛异常 ``` #### 2. Map `<map>` - **insert()**:插入键值对 ```cpp std::map<std::string, int> m; m.insert({"apple", 5}); ``` - **find()**:查找键 ```cpp auto it = m.find("apple"); ``` --- ### 四、算法 `<algorithm>` 1. **sort()** 排序容器元素 ```cpp std::vector<int> v = {3,1,4}; std::sort(v.begin(), v.end()); // {1,3,4} ``` 2. **find()** 查找元素 ```cpp auto it = std::find(v.begin(), v.end(), 3); ``` 3. **reverse()** 反转容器元素 ```cpp std::reverse(v.begin(), v.end()); // {4,3,1} ``` 4. **max() / min()** 返回两个值的较大/较小值 ```cpp int a = std::max(3, 5); // 5 ``` --- ### 五、数学函数 `<cmath>` 1. **sqrt(x)** 平方根:`sqrt(9.0) → 3.0` 2. **pow(x, y)** 幂运算:`pow(2,3) → 8` 3. **abs(x)** 绝对值:`abs(-5) → 5` 4. **ceil(x) / floor(x)** 向上/向下取整 --- ### 六、时间处理 `<chrono>` 1. **记录时间点** ```cpp auto start = std::chrono::high_resolution_clock::now(); // 执行代码 auto end = std::chrono::high_resolution_clock::now(); auto duration = end - start; // 计算时间差 ``` --- ### 七、其他实用函数 1. **swap(a, b)** 交换两个变量值 ```cpp int x=1, y=2; std::swap(x, y); // x=2, y=1 ``` 2. **memset()** 内存填充(慎用,需配合POD类型) ```cpp char buf[10]; std::memset(buf, 0, sizeof(buf)); ``` --- ### 扩展补充(C++11+) 1. **智能指针** `<memory>` - `std::unique_ptr`:独占所有权指针 - `std::shared_ptr`:共享所有权指针 2. **Lambda表达式** ```cpp auto func = [](int x) { return x * 2; }; ``` --- ✅ **注意事项** - 包含对应头文件(如`#include <vector>`) - 注意迭代器失效问题(如容器修改后的迭代器使用) - 字符串操作需注意越界(推荐使用`at()`替代`[]`)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值