在结构之间复制特定值
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) 按字母顺序查找您正在搜索的姓氏之后的姓氏。在这种情况下,将新姓氏直接添加到您找到的姓氏之前。
这可能不是最好的或唯一的解决方案,但我提供它作为前进的方向。
使用 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) 按字母顺序查找您正在搜索的姓氏之后的姓氏。在这种情况下,将新姓氏直接添加到您找到的姓氏之前。
这可能不是最好的或唯一的解决方案,但我提供它作为前进的方向。