大家 我想排序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 ;
}
}
答案 0 :(得分:2)
这里有初始化
xargs
你复制向量。然后,您对此副本进行排序,并将其丢弃(因为它在函数返回时被破坏)。
您需要保存此副本,或使用引用。