C++混乱中的机械臂
Inserters in C++ confusion
所以我不明白在这种情况下如何使用机械臂。我知道什么是插入器,我知道std::front_inserter和std::back_inserter和std::inserter,但我对我现在将要提出的这个问题感到困惑。 我需要制作函数,它将转换向量的 elemets 并将它们放入 deque(或者向量没关系,无论如何它的"通用"函数)。 该函数有 5 个参数,其中一个是另一个函数(只能有一个参数,没有指定什么类型(我的意思是它可以是引用、迭代器、指针......随便))。
如果我的向量是:
std::vector<int> v={1,2,3,4,5};
我需要对lambda函数进行一些修改,这将使我的deque具有这样的元素:
25 16 9 4 1
所以你看到deque的第一个元素是向量^2的最后一个元素(你可以看到我想做什么)。 所以我的问题是: 如何使用机械臂解决问题?我的意思是我应该以某种方式将插入器放入 lambda 功能中吗?也许lambda应该是这样的:
[](int x) {
x=x*x;
std::front_inserter(q);
}
我在考虑这个问题,但后来我不明白当我将其作为这个"大"函数的参数发送时,这个 lambda 将如何工作?它如何知道大函数中的q是什么?
我希望你明白我想做什么。
这是一个例子。 所以我必须做一些功能,这是原型(假设它是无效的):
typename<template Type1, template Type2>
void Fun(Type1 p1,Type1 p2,Type2 p3,Type2 p4,void (*f)(std::remove_reference<decltype(*p1)>::type) );
假设我在main中有以下代码:
int main() {
std::vector<int> v={1,2,3,4,5};
std::deque<int> d(5);
Fun(v.begin(),v.end(),d.begin(),d.end(), /* some lambda function */);
如果您只对转换感兴趣,而不对实现具有该类型的函数感兴趣,
std::deque<int> d;
std::transform(v.begin(), v.end(), std::front_inserter(d), [](int x){return x * x;});
或
std::deque<int> d;
std::transform(v.rbegin(), v.rend(), std::back_inserter(d), [](int x){return x * x;});
相关文章:
- 如何克服提升精神AST混乱
- 整数类型应该显式转换(例如"int"到"无符号")还是只会增加混乱?
- std::result_of语法混乱
- 使用具有默认参数的函数模板进行 decltype 会使结果混乱(一个有趣的问题或 gcc 的错误)
- C++中多线程的混乱
- Arduino LCD 显示屏显示混乱的字母
- 在MSDOS编译器上,用大于最大值的值初始化int时输出混乱
- 库设计混乱.. "public"/"private"(模板)标题,库文件..?
- 常量指针上的混乱
- 标准::C++17 的机械臂更换
- 导入机器人机械臂(6轴)的连接部件,并通过用户输入(C++代码)使每个关节旋转
- 智能手机代码厨师问题逻辑混乱
- 数组和指针使算术混乱
- C++智能指针混乱
- 双链表混乱
- SFML视图与窗口混乱
- 如果我将html与QTextEdit一起使用,则键入会很混乱
- 为什么我在有关文件编码格式的QT代码中获得了混乱的代码
- 双结肠混乱
- C++混乱中的机械臂