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

C++ For Loop: invalid operands to binary expression

本文关键字:操作数 无效 表达式 二进制 For 循环 C++      更新时间:2023-10-16

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

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

有人有什么建议吗?

我相信你的意思是

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

甚至更有可能

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

错误消息非常清晰:在此循环中

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

i具有类型 int,而vectorOne[vecCapacity]具有类型 Card,并且这些类型没有定义的运算符 <=。

所以这个循环是没有意义的。

也许你的意思是

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

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

您可以使用在标头<algorithm>中声明的标准算法std::copy

例如

#include <algorithm>
//...
std::copy( vectorOne, vectorOne + vecCapacity, vectorTwo );

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

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

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

vectorTwo.resize(vectorOne.size());