void PrimaryIndex::sortByTitle(){
P_Node* temp;
for (int temp = 0; temp < size(title); temp++) {
temp = NULL;
if (temp->title > temp->next->title) {
swap();
}
}
}
我知道这是错的,但我在这个程序中使用节点。这是我的PrimaryIndex
头文件,其中声明了函数
class P_Node
{
friend class PrimaryIndex;
private:
std::string title;
int pos;
P_Node * next;
P_Node * prev;
public:
P_Node() : title("Hi"), pos(0) { next = prev = NULL; }
P_Node(std::string my_title, int my_pos) : title(my_title), pos(my_pos)
{
next = prev = NULL;
}
};
class PrimaryIndex
{
friend class P_Node;
private:
P_Node * head;
P_Node * tail;
int size;
public:
PrimaryIndex() : size(0)
{
head = new P_Node(" ", -1);
tail = new P_Node("~", -1);
head->next = tail;
tail->prev = head;
}
// functions that I will be using
~PrimaryIndex() { killList(); }
bool set_title_key(std::string my_title, int my_key);
void writePrimary();
void readPrimary();
void change_title(std::string new_title, int key);
int matchTitle(std::string inTitle, int key);
void killList();
void deletebyTitle();
void sortByTitle();
void revSortByTitle();
};
我已经实现了很多这些功能,我试图抓住这些节点。我希望有人可以帮我解决这个问题
答案 0 :(得分:0)
根据PaulMcKenzie的评论建议:忘记所有代码并使用std::list
。它的存储类型 - 双重链表 - 基本上是你的班级想要实现的。然后只需使用std::sort
。
std::list<std::string> myList{"title1", "title2","titleN"};
std::sort(myList.begin(),myList.end());
如果这对您来说还不够,请使用您自己的自定义类并将其打包到列表中,然后将std::sort
与自定义谓词一起使用:
struct MyClass
{
std::string title;
//... more
};
std::list<MyClass> myList;
std::sort(myList.begin(), myList.end()
, [] (MyClass const& a, MyClass const& b) { return a.title<b.title;});