将类的值插入有序链表 - C ++

时间:2015-04-27 19:31:29

标签: list class c++11 linked-list

我有类Info,在main.cpp中我想创建使用Info类型的{0}的有序链接列表实现的对象,如orderedLinkedList<Info> object1;

有些人可以解释如何插入值(名字,姓氏和出生年份)。

#ifndef _INFO_H
#define _INFO_H

#include <iostream>
#include <string>

class Info{

    private:
        std::string _first_name;
        std::string _last_name; 
        int _birth_year;

    public:
        Info()=default;
        ~Info()=default;
        Info(string first_name, string last_name, int birth_year) : _first_name(first_name), _last_name(last_name), _birth_year(birth_year) {}

        string fName() {return _first_name;}
        string lName() {return _last_name;}
        int bYear() {return _birth_year;}

        void setInfo(string first_name, string last_name, int birth_year);          


};

void Info::setInfo(string first_name, string last_name, int birth_year)
{
    _first_name = first_name;
    _last_name = last_name;
    _birth_year = birth_year;
}

#endif

1 个答案:

答案 0 :(得分:1)

您的问题中存在多个问题。

STL中没有有序链表这样的东西。如果您的结构与呈现的一样小,我会advise against使用链接列表。

然后你可以使用例如std::vector(你仍然需要自己保持排序的实现)或更好的std::set已经实现了排序行为,并且通常比vector / list渐近更好( O(log(n)) 用于std::set O(n) std::vector)。为了使Info类可以在std::set中使用,您必须实现其少于运算符(在这种情况下签名为bool Info::operator<(const Info &rhs))。

BTW不要使用带有前导下划线的名称,因为它们是在C ++中保留的。 (尾随下划线很好。)