我有一個函數需要兩個整數向量。第一個向量作爲引用傳遞,第二個向量作爲const的引用。我想同時遍歷兩個向量,並更新第一個向量。因此,像下面:同時在ref/cref範圍上迭代
#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;
}
我快到的問題是遍歷兩個區域,其中一個是裁判,另一個是裁判常量。如何正確使用boost:combine/for循環?謝謝。
爲什麼你標記您的問題,您的代碼會工作的C++ 11和使用boost元組和foreach? – Chiel
爲什麼你將第二個作爲const引用傳遞? – Chiel
第三,你可以把一個我們可以真正編譯和運行的代碼嗎?或者在最壞的情況下,我們可以編輯以便編譯? – Chiel