我在这里和其他地方阅读到,当使用索引迭代std::vector时应该:
std::vector <int> x(20,1);
for (std::vector<int>::size_type i = 0; i < x.size(); i++){
x[i]+=3;
}
但是如果您要迭代两个不同类型的向量呢:
std::vector <int> x(20,1);
std::vector <double> y(20,1.0);
for (std::vector<int>::size_type i = 0; i < x.size(); i++){
x[i]+=3;
y[i]+=3.0;
}
可以安全地假设
std::vector<int>::size_type
与相同类型
std::vector<double>::size_type
仅使用 std::size_t
安全吗?
++i
的i++
之外,你仍然在每次循环时调用x.size()
,如果它不是微不足道的并且不是内联的话,这是浪费的。 - Matthieu M.std::common_type<...::size_type, ...::size_type>
,https://en.cppreference.com/w/cpp/types/common_type - alfC