我有三个列表,我想实现一个搜索功能。
代码的工作原理是,我创建了一个从每个列表的开头开始的迭代器,它将用户输入的内容与列表中的每个值进行比较,当它找到一个匹配项时,它应该增加一个整数变量一个,所以最后它会说:
your value is found: <x amount of times in Example list>
我遇到的问题是它编译得很好,但最终结果仍然给我 0,就像它没有增加变量一样。
我想知道比较迭代器指向用户输入的值是否有问题,任何人都可以阐明这一点吗?出于测试目的
关于迭代器 search_disregard
我手动将 4 个相同的值放入列表中,所以我知道最终结果应该显示 4,但我仍然得到 0:
cout << "\nSearch for: ";
string edit_search;
cin >> edit_search;
list<string>::iterator search_disregard = disregard_list.begin();
list<string>::iterator search_compare = compare_list.begin();
int search_disregard_count = 0;
int search_compare_count = 0;
for (int x = 0; x < disregard_list.size(); ++x)
{
if (*search_disregard == edit_search)
{
++search_disregard_count;
}
}
for (int x = 0; x < compare_list.size(); ++x)
{
if (*search_compare == edit_search)
{
++search_compare_count;
}
}
cout << edit_tag << edit_search << " is found in the following: \n" << endl;
cout << search_disregard_count << " time(s) in the Disregard List" << endl;
cout << search_compare_count << " time(s) in the Compare List" << endl;
buffer_clear();
最佳答案
您永远不会递增迭代器,因此它们将始终指向第一个元素。惯用的方式:
for(auto it = container.begin(); it != container.end(); ++it) ...
关于c++ - 字符串与指针比较的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24003336/