C ++ For循环:二进制表达式的操作数无效

时间:2014-10-25 17:57:11

标签: c++ for-loop

我正在尝试将数据从一个向量复制到另一个向量但是出现错误,“当我尝试编译以下for循环时,”二进制表达式'int'和'Card'的操作数无效:

for (int i = 0; i <= vectorOne[vecCapacity]; i++) { //step 3
                vectorTwo[i] = vectorOne[i];
   }

有人会有什么建议吗?

3 个答案:

答案 0 :(得分:3)

我相信你的意思是

for (int i = 0; i <= vecCapacity; i++)

甚至更可能

for (int i = 0; i < vecCapacity; i++)

答案 1 :(得分:2)

错误信息足够清晰:在此循环中

for (int i = 0; i <= vectorOne[vecCapacity]; i++) { //step 3
                vectorTwo[i] = vectorOne[i];
   }

i的类型为int,而vectorOne[vecCapacity]的类型为Card,且这些类型没有定义的运算符&lt; =。

所以这个循环毫无意义。

也许你的意思是

for (int i = 0; i < vecCapacity; i++) { //step 3
                vectorTwo[i] = vectorOne[i];
   }

还要考虑到你必须保证vectorTwo的大小不小于vectorOne的大小或至少vecCapacity

您可以使用标头std::copy

中声明的标准算法<algorithm>

例如

#include <algorithm>

//...

std::copy( vectorOne, vectorOne + vecCapacity, vectorTwo );

答案 2 :(得分:0)

你应该从0循环到vectorOne的大小。

for (int i = 0; i < vectorOne.size(); i++) { //step 3
                vectorTwo[i] = vectorOne[i];
   }`
`

另外,如果您这样做,请确保vectorTwo在循环之前足够大。

vectorTwo.resize(vectorOne.size());