我正在尝试将数据从一个向量复制到另一个向量但是出现错误,“当我尝试编译以下for循环时,”二进制表达式'int'和'Card'的操作数无效:
for (int i = 0; i <= vectorOne[vecCapacity]; i++) { //step 3
vectorTwo[i] = vectorOne[i];
}
有人会有什么建议吗?
答案 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());