【发布时间】:2022-01-24 02:07:39
【问题描述】:
我不知道为什么这个循环没有终止。请有人解释。我做错了什么。
std::vector<int> vec{};
int result{0};
for (unsigned i = 0; i < vec.size() - 1; i++) {
for (unsigned j = i + 1; j < vec.size(); j++) {
result += vec.at(i) * vec.at(j);
}
}
std::cout << result;
我想找出向量中整数对的乘积之和。例如:对于{1, 2, 3},result 应该是(1 * 2) + (1 * 3) + (2 * 3),它工作正常。但是对于像vector为空这样的边缘情况,它不会显示结果,而是永远运行。
【问题讨论】:
-
打印
vec.size() - 1,你可能会得到惊喜!这是巨大,因为size_t0 - 1成为unsignedsize_t可能的最大值。