C++:如何做一个链表,结构作为参数传递?
C++: How to do a linked list with struct passed as parameter?
所以我(大部分(理解带有指针的链表的概念。但是,我不确定如何能够创建在方法中传递的结构对象的链接列表。我是否需要另一个指针来指向结构上的指针? 我的结构包含指针:
// define a structure to hold bid information
struct Bid {
string bidId; // unique identifier
string title;
string fund;
double amount;
Bid *next;
Bid() {
amount = 0.0;
next = NULL;
}
};
我将结构对象传递给此方法以附加新的 Bid 结构:
void LinkedList::Append(Bid bid) {
// FIXME (3): Implement append logic
//reference bid being passed??? Bid struct has pointers, do we need another pointer?
Bid *currNode = &bid;
//set node's next pointer to NULL (end)
currNode->next = NULL;
//if list is empty
if (head == NULL) {
head = currNode;
tail = currNode;
}
else {
tail->next = currNode;
tail = currNode;
}
}
按值传递链表节点的问题在于它们会被复制。你可以设置一个指针来指向函数中的bid
值,但这几乎肯定不是你想要的,因为它会在函数结束时消失,使指针悬空。链表节点几乎总是堆分配的,并通过指针传递,因为您可以手动控制堆分配对象的生存期(这在这里是必不可少的(。
现在,从OO的角度来看,这有点问题在于您的Bid
类违反了单一责任原则(SRP(,因为它既是有关投标的具体信息的存储,又是将某些投标链接在一起的参与者。这是您很少在 OO 语言中看到侵入性容器的原因之一。根据您的确切用例,最好将无指针Bid
存储在将执行链接的BidNode
中。如果这样做,则可以按值传递Bid
,并将其复制到堆分配的BidNode
中。或者,当然,您可以只使用std::list
.
相关文章:
- 如何传递带有通过引用传递的结构参数的函数?
- 如何在方法中传递结构参数
- C++:如何做一个链表,结构作为参数传递?
- 是否可以将结构的成员变量作为参数传递
- 在模板方法 c++ 中传递结构参数
- 将未知结构(在运行时)作为模板参数传递
- 将模板参数传递到内部结构时出错
- POSIX线程,将多个参数传递给具有结构的函数
- 如果结构作为递归函数中的参数传递,如何初始化结构的成员变量
- 如何将参数从结构正确传递到函数
- C++,将结构特征作为参数传递到函数中
- 结构的匿名(?)初始化作为C 03中的参数传递
- C++将结构的数组作为函数参数传递
- 将泛型结构作为接口中的参数传递
- 参数传递的不同矩阵结构
- C++ 将结构函数作为继承结构中函数的参数传递
- 在 C++11 中将结构作为输出参数传递
- 如何使用 boost::bind 将类/结构实例作为参数传递给回调
- 解析结构并作为指针参数传递
- 将结构参数传递给结构内的函数