【问题标题】:Accessing objects from a linked list (custom implementation)从链表访问对象(自定义实现)
【发布时间】:2014-01-12 17:13:55
【问题描述】:

当使用存储大量对象的链表时,您将如何访问所述对象内的数据?

示例代码。

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方法的模板对象数据成员并输出数据。

有什么想法吗?

顺便说一句,是否可以在链表中搜索特定对象(具有特定数据成员值的对象)?当然,对象仍在使用模板

【问题讨论】:

    标签: c++ object linked-list cout


    【解决方案1】:

    当使用存储大量对象的链表时,您将如何访问所述对象内的数据?

    如果您有nodePtr,则必须执行ptr-&gt;data 才能访问结构的int


    我目前的做法不起作用,我不知道如何解决。

    您正在尝试访问类型为 int 的对象上的成员函数,该对象没有任何成员函数。您可能打算为nodedata 成员对象定义另一种类型。


    顺便说一句,是否可以在链表中搜索特定对象(具有特定数据成员值的对象)?

    当然,这种算法的实现非常简单。您可以按照以下方式实现它:

    nodePtr find(nodePtr head, int value) {
        for (; head != NULL; head = head->next)
            if (*head == value)
                return first;
        return NULL;
    }
    

    我建议使用标准std::forward_liststd::list。如果这样做,您将能够使用std::find 进行“查找”算法。

    【讨论】:

      【解决方案2】:

      这里的问题是dataint 类型而不是类类型。您必须将其类型更改为类类型,例如 Foo。更高级的解决方案将使用模板使其适用于任意类型(例如 std::list


      还要注意你的类定义不被认为是好的风格。我将其定义为:

      struct node                                                
      {   
          typedef node* Ptr;
      
          Foo data;               
          node* next;             
      };
      

      虽然typedef 仅在某些特殊情况下是合理的(例如,如果广泛使用智能指针和引用计数)。在正常情况下,应该使用node*(也更小的 o.O)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-12
        • 2018-08-30
        • 2019-03-02
        • 2011-02-06
        • 1970-01-01
        • 1970-01-01
        • 2016-02-11
        • 2011-02-26
        相关资源
        最近更新 更多