std::对的翻转顺序

Flip order of std::pair

本文关键字:顺序 翻转 std      更新时间:2024-09-21

如何翻转std::pair的顺序?是否有内置命令,或者我需要创建一个新的对。

目前,我正在通过创建一对新鞋来做到这一点。

std::pair el_ids(0,1);
el_ids = std::make_pair(el_ids.second, el_ids.first);

只要这两种类型的对是相同的,你就可以交换它们(就像@273k在评论中指出的那样(,例如:

导螺杆示例

std::pair p = {1, 2};
std::swap(p.first, p.second);

如果类型不同,你必须为它编写一个小的实用程序函数,因为没有内置的方法可以做到这一点,例如:

导螺杆示例

template<class T>
constexpr auto pair_swap(T&& pair) {
return std::make_pair(
std::forward<T>(pair).second,
std::forward<T>(pair).first
);
}
// Usage Example:
std::pair p = {std::string{"A"}, 12};
auto p2 = pair_swap(std::move(p));

您也可以直接交换的内容

std::pair el_ids(0,1);
std::swap(el_ids.first,el_ids.second);

您还可以使用统一初始化:

int main() {
std::pair el_ids(0,1);
el_ids = {el_ids.second, el_ids.first};
}

运行示例:https://godbolt.org/z/6vjf58co8