有没有办法将第一个和第二个元素替换为向量中的所有元组?假设我有这样的东西:
#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成为第一个元素吗?
由于您的std::tuple只包含两个值,因此我建议改用std::pair。
#include <iostream>
#include <vector>
#include <utility>
int main()
{
std::vector<std::pair<int,int>> my_vector;
my_vector.push_back(std::make_pair(1,2));
my_vector.push_back(std::make_pair(3,4));
for (auto const& p : my_vector) {
std::cout << p.first << " " << p.second << std::endl;
}
for (auto& p : my_vector) {
std::swap(p.first, p.second);
}
for (auto const& p : my_vector) {
std::cout << p.first << " " << p.second << std::endl;
}
}
现场示例
您可以对每个算法使用lambda:
std::for_each(my_vector.begin(), my_vector.end(), [](auto& tuple) {
std::swap(std::get<0>(tuple), std::get<1>(tuple));
});
您还可以为使用基于范围的:
for (auto& tuple : my_vector)
std::swap(std::get<0>(tuple), std::get<1>(tuple));
如果您决定将std::tuple替换为std::pair,此代码也会起作用,因为可以使用
而不是标准::交换(…)
您可能希望这样编写:
using std::swap;
swap(std::get<0>(tuple), std::get<1>(tuple));
如果您有一些用户定义的类型,而不是int,这将非常有用
本文向大家介绍交换数组的第k个元素-JavaScript,包括了交换数组的第k个元素-JavaScript的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个JavaScript函数,该函数接受一个Numbers和一个数字数组,例如k(k必须小于或等于数组的长度)。 并且我们的函数应该从数组末尾的第k个元素开始替换第k个元素。 示例 以下是代码- 输出结果 以下是控制台中的输出-
我写了一个函数来交换C中队列的第一个和最后一个元素 注意:“只考虑(空、去队列、CREATQ和入队)是其他函数。 但是如果最后一个元素在中间被复制,如果这是队列的元素(5,1,9,3,9),如果我们跟踪这些元素上的函数,它将会是(9,1,3,5),有一个丢失了! 那么,如果这个函数有逃避这个或任何其他想法的话?!
我试着使用电抗器中的SwitchOnFirst算子,这很神奇-除了有时作为双函数的第二个参数传递的transformer似乎不包括第一个元素。基本上,客户端通过RSocket向服务器发送2个项目。代码服务器端如下所示: 客户端第一次启动时,服务器接收这两个项目,并按预期将其发布到actorsink。 但是,如果我停止客户端并再次运行它,则只发布第二项。 一个区别是请求(16)触发请求(16),而不
本文向大家介绍JavaScript数组中的第一个元素和最后一个元素?,包括了JavaScript数组中的第一个元素和最后一个元素?的使用技巧和注意事项,需要的朋友参考一下 数组是一组元素。每个元素都有其自己的 索引值。我们可以使用这些索引访问任何元素。但是,对于最后一个元素,直到知道数组中存在的元素数量,我们才知道索引。在这种情况下,我们必须使用逻辑。让我们简要地讨论这些细节。 访问第一个元素 因
我有一个数组,看起来像:。而将始终保持常数。我希望x每迭代增加100。 我就是这么做的: null null 正如您所看到的,它不是在增加值。它总是只是插入。在第一个名为pies的对象中,我希望和下一个名为cakes的对象为。 我该怎么做?
我试图将两个向量的元组包装成C中的元组,但无法解码神秘的编译器错误消息。 以下是代码片段(请原谅我使用指令): 这是Visual Studio 2010中的错误消息 我的代码有什么问题? <罢工>编辑:如果我显式地声明了结果类型,那么它是有效的。 编辑:假警报,如果我声明的类型,它也不会编译。