在结构之间复制特定值

Copying specific values between structs

使用 C++ 而不是使用 STL 容器的函数,我试图以特定方式将值从一个结构复制到另一个结构。

我有这样的结构(单链表),我是这样添加新元素的:

struct Node {
    Node *next;
    std::string name;
    std::string surname;
};

void AddElement(Node *&head, const std::string &name, const std::string &surname)
{
    head = new Node {head, name, surname};
}

示例用法:

Node *pointer = nullptr; 
AddElement(pointer, "Alex", "Smith"); 
AddElement(pointer, "Robert", "Johnson"); 
AddElement(pointer, "George", "Smith"); 
AddElement(pointer, "Oscar", "Williams");

我还有一个结构:

struct Result {
    Result *next;
    std::string surname;
};

我只想将第一个节点列表中的所有 "surname" 值复制到新的结果列表中,每个给定的 "surname" 值只复制一次。

也就是说,如果我的节点链表中有这样的姓氏:"Smith", "Johnson", "Smith", "Johnson", "Williams",我想在我的结果列表中有 "Smith", "Johnson", "Williams"

我是 C++、指针和结构的新手。我该如何处理?

这里有一个可能的算法来减少搜索,而不改变基本的结构定义:

让您的结果结构列表按字母顺序排序。每当您检查姓氏时,搜索 Result 结构直到您:(1) 找到完全匹配的,因此不要添加它 (2) 按字母顺序查找您正在搜索的姓氏之后的姓氏。在这种情况下,将新姓氏直接添加到您找到的姓氏之前。

这可能不是最好的或唯一的解决方案,但我提供它作为前进的方向。