可能的重复:
我可以在 for 循环的初始化中声明不同类型的变量吗? https://stackoverflow.com/questions/8644707/can-i-declare-variables-of-different-types-in-the-initialization-of-a-for-loop
我想在 C++ 中有一个 for 循环,它在初始化时构造 2 种不同类型的向量迭代器。
这是我想要的一个粗略想法:
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 向量,因为我正在寻找通用的解决方案。 [IE。我可能有一些函数 f 它将 int 转换为 double,然后计算 f(*i) * (*j)]
你可以声明一个std::pair
with first
and 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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)