gpt4 book ai didi

c++ - 如何从列表中提取某些值并将其放入另一个列表

转载 作者:行者123 更新时间:2023-11-30 04:03:57 25 4
gpt4 key购买 nike

我真的很难做到这一点。我有一个代码块设置,它检查从一个列表到另一个列表的每个值。我希望它如何工作是当两个值相似时,它应该将该值复制或复制到一个完全独立的列表中。到目前为止,我所有的努力都失败了。谁能解释一下这个问题?

void compare_list_warning(list<string>*list_one,list<string>*list_two)
{
cout << "Made a function call!!!" << endl;

list<string> duplicates;
string line;
string *ptline = &line;

list<string>::iterator pt1 = list_one->begin();

cout << "About to compare the lists" << endl;
for (int x = 0; x < list_one->size(); ++x)
{
list<string>::iterator pt2 = list_two->begin();
for (int x = 0; x < list_two->size(); ++x)
{
if (*pt1 == *pt2)
{
*pt1 = *ptline;
duplicates.push_back(line);

}
else
{
++pt2;

}
}

++pt1;
}

最佳答案

How i want it to work is when two values are similar it is supposed to either copy or duplicate that value into a completely separate list.

当您可以相当直接地转换为 C++ 时,您正在使用不必要的变量和指针使事情变得复杂。

根据您的描述,您需要一个函数,它接受两个字符串列表并返回两个输入列表中都存在的字符串列表。

也就是说,

list<string> duplicates(list<string> list_one, list<string> list_two)
{

我们需要一个单独的列表来从函数返回。

    list<string> duplicates;

这就是我们需要的所有变量。

现在,遍历两个列表以查找重复项。
您用于迭代的 x 没有任何实际用途,而且还会造成混淆。
让我们使用更惯用的迭代器循环。

对于 list_one 中的每个项目

    for (list<string>::iterator p1 = list_one.begin(); p1 != list_one.end(); ++p1)
{

遍历list_two中的每一项

        for (list<string>::iterator p2 = list_two.begin(); p2 != list_two.end(); ++p2)
{

如果两项相同,则将其中一项添加到 duplicates 列表中。

            if (*pt1 == *pt2)
{
duplicates.push_back(*pt1);
}
}
}

当你浏览完所有内容后,返回结果

    return duplicates;

(这里有一个错误,您用空字符串而不是相反的方式覆盖了 list_one 中的当前项。此外,只有在找不到匹配项时才推进迭代器。)

关于c++ - 如何从列表中提取某些值并将其放入另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24016196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com