0

我目前正在尝试int使用迭代器运行 s 的向量。每次我运行它时,我只得到一个 0 的值。两个向量中都有有效的数据。

OffenseName并且Down是用户输入的私有成员数据。

vector <string> :: iterator itr;
vector <int> :: iterator itrdown;
int count = 0;

for (itr = dataOffenseName.begin(); itr!= dataOffenseName.end(); ++itr)
{
    if ( OffenseName == *itr )
    {
        for (itrdown = dataDown.begin(); itrdown != dataDown.end(); ++itrdown)
        {
            //Here itrdown is always coming at 0. The dataDown vector 
            //does have valid data in it
            if (Down == *itrdown) 
            {
                count++;
            }
            else
            {
                break;
            }
        }
    }
}
return count;   
4

2 回答 2

1
if (Down = *itrdown) 

来吧,书中最古老的把戏:)

if (Down == *itrdown)

将是正确的。

于 2013-09-07T22:16:02.157 回答
0

if (Down = *itrdown)

应该

if (Down == *itrdown)

前者不是比较,只是一个赋值,同时你的意思是第二个:比较。

但是,这里有一个更重要的教训:在构建时打开警告。如果你已经这样做了,你就不会错过这个,除非你不考虑警告而不评估它们,这不是一个好主意。

这可能是从这种情况中学到的更重要的一课,因为那时您根本不需要调试这样的问题。;-)

于 2013-09-07T22:16:09.370 回答