我有类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
答案 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 ++中保留的。 (尾随下划线很好。)