提问人:Rio_t 提问时间:1/20/2022 最后编辑:Drew DormannRio_t 更新时间:1/20/2022 访问量:1659
swap() 函数在 iostream 标头中有效吗?
Does swap() function works in iostream header?
问:
#include <iostream>
using namespace std;
int main(){
swap(a[i],a[j])
}
在这种情况下,交换函数会自动工作,或者我需要创建另一个交换函数来解决这个问题?
答:
2赞
Bathsheba
1/20/2022
#1
swap
不是 C++ 中的关键字,而是 C++ 标准库中的函数。因此,要使用它,您需要从相应的 C++ 标准库标头中引入函数。不幸的是,自从它首次进入 C++ 标准以来,它一直相当流动:std::swap
直到但不包括 C++11,您需要
#include <algorithm>
从 C++ 11 开始,您需要
#include <utility>
从 C++17 中,您可以改为
#include <string_view>
依赖标头的隐式包含意味着您不是在编写可移植的 C++。
评论
0赞
Pete Becker
1/20/2022
嗯,我在 C++17 或 C++20 中没有看到提供. 确实定义了它。<string_view>
std::swap
<utility>
0赞
Bathsheba
1/20/2022
@PeteBecker:这还不是很确定(我知道你是这个领域的专家),但请看 en.cppreference.com/w/cpp/algorithm/swap
0赞
Drew Dormann
1/20/2022
@PeteBecker就其价值而言,这里也提到了它。en.cppreference.com/w/cpp/header/string_view
1赞
Pete Becker
1/20/2022
@FrançoisAndrieux -- 啊哈!措辞奇怪,但是,是的,这似乎确实是意图。(“可用”是懒惰的写作;它应该是“应被定义”,以强加一个要求)(顺便说一句,标准语中的“注释”是非规范的,并标记为“[注意...... ]”。有问题的文本不是注释)无论如何,仍然有效,并且不会引起人们的注意。<utility>
评论
a
std::swap
的标头之一,以便它可以在任何平台上工作。#include <iostream>
std::swap
#include <utility>
a