int CardDeck::inOrder(){
deque<int>::const_iterator i;
for (i = nameofdeque.begin(); i != nameofdeque.end(); ++i){
if (nameofdeque[i] >= nameofdeque[i+1]){
return 0;
}
}
return 1;
}
此代码在第4行显示错误“CardDeck.cpp:37:error:'['令牌之前的预期类型说明符 CardDeck.cpp:37 ::参数太多了。
我想知道如何解决这个问题。 我试过“if(nameofdeque.at(i)&gt; = nameofdeque.at(i + 1){” 但无济于事。
非常感谢任何帮助, 谢谢!
答案 0 :(得分:2)
Iterator不是deque的索引,您使用*i
来访问它指向的成员。
答案 1 :(得分:2)
在代码中i
是迭代器,而不是索引(整数)。
operator[]
需要索引(整数)作为参数。
答案 2 :(得分:2)
operator[]
接受size_t
即索引,但是您正在向其传递迭代器。如果你想用迭代器来做,那么将第4行改为
if (*i >= *(i+1)) {
为了避免这种混淆,迭代器通常被命名为iter
,而不是用于循环索引或下标的通常标识符i
。
如果你真的想在没有迭代器但是使用索引的情况下这样做,那么你可以将函数改为
int CardDeck::inOrder() {
for (size_t i = 1u; i < nameofdeque.size(); ++i) {
if (nameofdeque[i - 1] >= nameofdeque[i]) { // you cannot do this for the first element, hence the loop's variable starts at 1 to offset this
return 0;
}
}
return 1;
}