c++ - 字符串与指针比较的问题

标签 c++ list iterator

我有三个列表,我想实现一个搜索功能。

代码的工作原理是,我创建了一个从每个列表的开头开始的迭代器,它将用户输入的内容与列表中的每个值进行比较,当它找到一个匹配项时,它应该增加一个整数变量一个,所以最后它会说:

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/

相关文章:

c++ - 是否可以从 C++ 在 QML 上编写上下文属性?

c++ - 用于 C++ 多平台项目的工具

javascript 迭代对象数组

python - Python中重复列表中的数据处理

java - 在Java中实现CustomList的List接口(interface)

c++ - 如何在 C++ 中实现分布式 map 的 API?

java - 是否有任何数据结构没有重复项,但可以在迭代时添加元素?

c++ - 为什么需要两个 EOF 作为输入?

c++ - 外部 "C"全局变量的外部声明

java - 使用 BasicDBObject 从 JSON 字符串列表中获取键和值