- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个接受两个整数 vector 的函数。第一个 vector 作为引用传递,第二个 vector 作为对常量的引用传递。我想同时遍历两个 vector ,并更新第一个 vector 。所以像下面这样:
#include <iostream>
#include <vector>
#include <boost/foreach.hpp>
#include <boost/range/combine.hpp>
void foo(std::vector<int>& a, std::vector<int> const& b)
{
boost::tuple<int&, int const&> x;
BOOST_FOREACH(x, boost::combine(a,b)) {
int& v1 = x.get<0>();
int const& v2 = x.get<1>();
v1 = v1 + v2 + 5;
}
}
int main(int argc, char **argv)
{
std::vector<int> a(3,10);
std::vector<int> b(3,10);
foo(a,b);
for (int v : a) {
std::cout << v << std::endl;
}
return 0;
}
我遇到的问题是迭代两个范围,一个是 ref,另一个是 ref const。如何正确使用 boost:combine/for 循环?谢谢。
最佳答案
至少如果我正确阅读了 Boost 内容,您似乎想要类似于以下内容的内容:
std::transform(a.begin(), a.end(),
b.begin(),
a.begin(),
[] (int x, int y) { return x + y + 5; });
就目前而言,它使用 C++11。如果你在没有 C++11 的情况下需要它,你无疑可以使用 Boost Lambda 来完成同样的事情,或者你可以自己编写一个函数对象:
struct combine {
int operator()(int x, int y) { return x + y + 5; }
};
void foo(std::vector<int>& a, std::vector<int> const & b)
{
std::transform(a.begin(), a.end(),
b.begin(),
a.begin(),
combine());
}
另请注意 std::vector<int>& const b
是不正确的。你几乎肯定想要:std::vector<int> const &b
反而。随着const
在 &
之后,它表示引用本身是 const
.把它移到前面意味着引用所指的是const
。 .前者没有意义(您不能将 const
应用于引用;就 const 引用的概念完全有意义而言,每个引用始终是 const)。
关于c++ - 在 ref/cref 范围内同时迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36487054/
我在 C# 2010 类库中有以下代码: /// /// Execute all enable tests synchronously. /// Function may throw excepti
/// /// ... /// Use function to stop this function from another thread. /// public static void Si
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
在c#中使用标签时是否可以更改显示的字符串?我想做这样的事情: /// /// Do some magic on the provided text. /// public void SomeMe
我有一个接受两个整数 vector 的函数。第一个 vector 作为引用传递,第二个 vector 作为对常量的引用传递。我想同时遍历两个 vector ,并更新第一个 vector 。所以像下面这
试图通过我的项目和扩展文档,并有以下情况: //TestClass.h namespace Test { public enum class TypeOne { ///
我在 cref 上安装 javacard applet 时遇到问题。 我从 oracle javacard 示例中获取简单的示例 - HelloWorld 并添加两行额外的行 - import sim
在 cref 链接中使用程序集别名时,我无法解决 C# 编译器警告。不幸的是,我从 intellisense 得到的唯一反馈是“语法错误”。这是链接的示例 [请参阅 cref="global::Nam
为什么在 C++ 中出现两个名称不同的函数 ref 和 cref?为什么不是唯一重载的 ref 函数?是否有一些重要的语义原因? 最佳答案 因为有时你想将一个const 引用包装到一个非const 对
我有这样的通用异常类: public class DuplicateException : Exception { public TEntity Entity { get; set; } }
在此处使用 cref 属性时,T: 部分是什么意思? 和 最佳答案 当编译器在文档中生成 id 时,它本质上是对代码引用所指内容的注释。此处,T 表示所引用的名称 System.Windows.F
当我为我的项目编写函数时,更具体地说,编写它们的 XML 文档注释时,我发现自己经常重复特定参数的注释。这有时会导致误导性文档(因为复制粘贴通常会......)。 这是我想到的一个简单的例子,它代表了
我在 MSDN 中看到诸如“CompareOrdinal Overloads”之类的链接。我如何在 C# 中编写这样的链接? 我试过: MyMethod Overloads 但是编译器会警告我对具有其
在为我的程序编写 XML 文档时,我遇到了记录此方法的问题: internal void MethodB(int i, DateTime? date = null); 我遇到的问题特定于 date 参
这是我以前从未见过的新问题。它发生在 LibCURL.NET 的开源包装器中: http://sourceforge.net/projects/libcurl-net/ 我收到一个模糊的引用“警告为错
这个问题在这里已经有了答案: 关闭 9 年前。 Possible Duplicate: How to reference generic classes and methods in xml doc
我在 MSDN 中看到诸如“CompareOrdinal Overloads”之类的链接。我如何在 C# 中编写这样的链接? 我试过: MyMethod Overloads 但是编译器会警告我对具有其
我有一个文档评论: /// This is an xml doc comment 我怎样才能让 Roslyn 为我解析这个并给我确定的 MyClass 类型? 最佳答案 您需要找到类型名称对应的Cr
在 C# 中,我尝试使用 来引用包含 params 关键字的方法签名。我知道这会将参数列表转换为数组,但我什至不知道如何在 CREF 属性中引用数组。我在搜索中一无所获,我认识的人也没有任何想法。编译
当您在 Visual Studio(我使用的是 2010)中为 C# 方法创建 XML 文档时,您会收到对创建各种 XML 标记(如 see、paramref 等)的 Intellisense 支持。
我是一名优秀的程序员,十分优秀!