c++:交换向量中所有元组的第一个和第二个元素

c++:交换向量中所有元组的第一个和第二个元素,c++,vector,tuples,swap,C++,Vector,Tuples,Swap,有没有办法将向量中的第一个和第二个元素交换为所有元组? 假设我有这样的东西: #include<vector> #include<tuple> int main() { std::vector<std::tuple<int,int>> my_vector; my_vector.push_back(std::make_tuple(1,2)); my_vector.push_back(std::make_tuple(3,4)); } 元组的第一个元

有没有办法将向量中的第一个和第二个元素交换为所有元组? 假设我有这样的东西:

#include<vector>
#include<tuple>

int main()
{
std::vector<std::tuple<int,int>> my_vector;
my_vector.push_back(std::make_tuple(1,2));
my_vector.push_back(std::make_tuple(3,4));
}
元组的第一个元素现在是1和3,第二个元素是2和4。是否有一种简单的方法可以将2和4作为第一个元素?

您可以将算法与lambda结合使用:

std::for_each(my_vector.begin(), my_vector.end(), [](auto& tuple) {
    std::swap(std::get<0>(tuple), std::get<1>(tuple));
});
如果您决定用std::pair替换std::tuple,那么这段代码也会起作用,因为std::pair的成员第一个和第二个分别使用std::get和std::get

而不是std::swap。。。您可能想写它:

如果您有一些用户定义的类型T,而不是int,那么这将非常有用。对于这些类型,void swapT&,T&函数的实现可能比std::swap性能更好,可以通过找到。

由于std::tuple只包含两个值,我建议使用std::pair

包括 包括 包括 int main { std::vector my_vector; my_vector.push_backsd::make_pair1,2; my_vector.push_backsd::make_pair3,4; 对于自动const&p:我的_向量{
STD::你尝试了什么?STD::TUPLE可以有两个以上的元素。为什么不使用STD::对?那么你的问题是:我如何交换第一个和第二个元素的元组值?是否有一个方法来交换向量中所有元组的第一个和第二个元素?如果答案是否定的,C++将是一个非常脆弱的局域网。语言。我想Jabberwocky只是想指出元组是否在向量中并不重要。如果你知道如何使用元组,你也可以使用元组进行循环many@formerlyknownas_463035818当然,我正打算加上这个。
for (auto& tuple : my_vector)
    std::swap(std::get<0>(tuple), std::get<1>(tuple));
using std::swap;
swap(std::get<0>(tuple), std::get<1>(tuple));