如何使用算法的排序函数(c ++)

时间:2017-11-23 14:26:12

标签: c++

大家 我想排序basefile对象的向量。 我有两个类继承自bsefile,称为文件和目录,每个类都有名称和大小的字段。 我想按名称对矢量进行排序,我尝试使用算法库的sort函数来完成此操作,但由于某种原因,矢量打印不会出现排序。 我附上打印代码并发送到排序功能,你能告诉我我是否正确使用它们?

排序功能 -

    void Directory::sortByName(){
        vector<BaseFile*> vecToSortByName = this->getChildren();
        sort(vecToSortByName.begin(), vecToSortByName.end() , [](BaseFile* &left, BaseFile* &right){
            return ( left->getName() < right->getName() );
        });
    }



void printForLs(bool sortBySize ,  Directory* mkdirPath){
    if(sortBySize){ //if -s in the command
        mkdirPath->sortBySize();  //we sort stable sort
    }else mkdirPath->sortByName(); //else we need to sort only by name
    vector<BaseFile*> list = mkdirPath->getChildren();
    int size = list.size();
    for( int i = 0 ; i < size ; i++){
        list[i]->printMyType();
        cout << "  " <<list[i]->getName() << "  " << list[i]->getSize() << endl ;
    }
}

1 个答案:

答案 0 :(得分:2)

这里有初始化

xargs

复制向量。然后,您对此副本进行排序,并将其丢弃(因为它在函数返回时被破坏)。

您需要保存此副本,或使用引用。