从链表访问对象(自定义实现)
Accessing objects from a linked list (custom implementation)
当使用存储大量对象的链表时,您将如何访问所述对象中的数据?
示例代码。
using namespace std;
typedef struct node
{
int data;
node* next;
} *nodePtr;
nodePtr head;
nodePtr current;
nodePtr temp;
void PrintList()
{
current = head;
while(current != NULL)
{
cout << current->data.getMakeModel();
cout << current->data.getRegNo();
cout << current->data.getEngineSize();
cout << current->data.getRented();
current=current->next;
}
}
我目前的做法不起作用,我不确定如何解决它。
我需要做的就是访问我有 getter 方法的模板对象数据成员并输出数据。
有什么想法吗?
附带说明一下,是否可以在链表中搜索特定对象(具有特定数据成员值的对象)? 当然,对象仍在使用模板
当使用存储大量对象的链表时,您将如何访问所述对象中的数据?
如果您有nodePtr
则必须执行ptr->data
才能访问结构的int
。
我目前的做法不起作用,我不确定如何解决它。
您正在尝试访问类型为 int
的对象上的成员函数,该对象没有任何成员函数。您可能打算为 node
的 data
成员对象定义另一种类型。
附带说明一下,是否可以在链表中搜索特定对象(具有特定数据成员值的对象)?
当然,这种算法的实现是相当微不足道的。您可以按照以下方式实现它:
nodePtr find(nodePtr head, int value) {
for (; head != NULL; head = head->next)
if (*head == value)
return first;
return NULL;
}
我的建议是使用标准std::forward_list
或std::list
。如果你这样做,你将能够使用std::find
进行"查找"算法。
这里的探测是data
属于 int
类型而不是类类型。您必须将其类型更改为类类型,例如 Foo
.更高级的解决方案将使用模板使其适用于任意类型(例如std::list
)
另请注意,您的类定义不被视为好的样式。我会将其定义为:
struct node
{
typedef node* Ptr;
Foo data;
node* next;
};
虽然typedef
仅在某些特殊情况下是合理的(例如,如果使用智能指针和引用计数进行广泛工作)。在正常情况下,应该使用node*
(这也是较小的o.O)
相关文章:
- 如何正确实现和访问运算符的各种自定义枚举器
- 如何实现自定义匹配器以检查 Catch2 中的对象相等性
- 双链表的自定义实现不起作用(教育)
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- 为自定义打印调试实现传递任何类型的变量
- 基于自定义void_t实现的成员检测
- c++ 中的自定义分配器,用于不调用secure_string实现
- C# HashSet VS C++ std::unordered_set 使用自定义类键。C++慢...不可能。如何实现 C# 的速度?
- 为自定义类C++实现哈希
- 自定义哈希表实现-将字符串映射到整数时出现内存错误
- 如何自定义wxApp来实现协议
- 如何实现接受参数的自定义流操纵器?
- 如何测试AVL树的自定义实现
- DirectX 12自定义实现与DirectX 11相同
- 可以将STD :: StreamBuf的自定义实现中的异常交付给流用户
- 从链表访问对象(自定义实现)
- C++中 malloc 的自定义实现
- 自定义实现具有位表示的bool向量-如何实现运算符[]
- 在OpenCV中自定义实现
- c_str() 自定义实现/在每个字符串末尾"="