我一直致力于 MaxCounters 任务的 Codility。我被卡住了。无论我尝试什么,下面的代码都不会循环
// you can also use includes, for example:
// #include <algorithm>
vector<int> solution(int N, vector<int> &A)
{
vector<int> counter (N,0);
for (int i = 0;i < A.size();i++)
{
int value = A.at(i);
if (value = A.size() + 1)
{
}
else
counter[value - 1] += 1;
}
return (counter);
}
我已经使用这个网站找到了我的问题的解决方案,但无济于事。我不断收到此错误消息。
In file included from user.cpp:20: func.cpp: In function 'std::vector > solution(int, std::vector >&)': func.cpp:7: warning: comparison between signed and unsigned integer expressions func.cpp:11: warning: suggest parentheses around assignment used as truth value
知道为什么它一直抛出这个错误吗?
编辑:从其他测试来看,很明显无论我做了什么练习,我都会遇到这个错误。因此,我得出结论,我还没有理解循环 vector 。遍历 vector 的正确方法是什么?
最佳答案
正如编译器所建议的那样:
if (value = A.size() + 1)
正在为 A.size() + 1 的值赋值,而不是评估它们的相等性
if (value == A.size() + 1)
可能是您想要的。
此外,size()
返回一个 unsigned int,而不是一个 int
,因此编译器对此表示不满。
关于C++ : For Loop and Vectors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23034950/