这个问题已经在这里有了答案:




已关闭8年。






我想在c++中有一个for循环,该循环在初始化时构造2种不同的 vector 迭代器。

这是我想要的粗略想法:

std::vector<double> dubVec;
std::vector<int> intVec;
double result = 0;

dubVec.push_back(3.14);
intVec.push_back(1);

typedef std::vector<int>::iterator intIter;
typedef std::vector<double>::iterator dubIter;

for (intIter i = intVec.begin(), dubIter j = dubVec.begin(); i != intVec.end(); ++i, ++j)
{
  result += (*i) * (*j);
}

有人知道这种情况下的标准是什么吗?
我不能只为intVec使用double的 vector ,因为我正在寻找一个通用的解决方案。 [即我可能有一些函数f,它需要将int加倍,然后计算f(* i)*(* j)]

最佳答案

您可以使用迭代器类型std::pairfirst声明second:

for (std::pair<intIter, dubIter> i(intVec.begin(), dubVec.begin());
     i.first != intVec.end() /* && i.second != dubVec.end() */;
     ++i.first, ++i.second)
{
    result += (*i.first) * (*i.second);
}

09-06 18:32