如何从列表中排序(自定义)字符串

时间:2019-05-29 08:04:22

标签: c++

我正在使用仅包含字符串的列表结构。我必须按长度&&按字母顺序对其进行排序。

示例输入:

  

茶,电车,顶部,三叉,部队,真实

导致:

  

茶,ter,顶部,电车,真实,部队

我可以按字符数对字符串进行排序,但是我对如何按字母顺序重新排序感到困惑。结果字符串显示:tea,top,ter ..,并且它们不是按字母顺序排列的。 我正在使用插入排序和辅助列表。

List_pointer<string> odd1(odd);
auto p1 = odd1.next(odd1.begin());
auto p2 = p1;
if (!odd1.empty())
{
    while (!odd1.end(p1))
    {
        p2 = odd1.previous(p1);
    while (p1 != odd1.begin() && ((odd1.read(p2).size()) > (odd1.read(p1).size())))
    {
    {
        auto temp = odd1.read(p1);
        odd1.write(odd1.read(p2),p1);
        odd1.write(temp,p2);
    }
        p1 = odd1.previous(p1);
        p2 = odd1.previous(p1);
    }
    p1 = odd1.next(p1);
   }
}
cout << odd1 << endl;

我知道错误在这里:while (p1 != odd1.begin() && ((odd1.read(p2).size()) > (odd1.read(p1).size()))),但我被卡住了。

2 个答案:

答案 0 :(得分:1)

要使用的比较功能类似于

bool compare_size_then_alpha(const std::string& lhs, const std::string& rhs)
{
    if (lhs.size() != rhs.size()) {
        return lhs.size() < rhs.size();
    }
    return lhs < rhs; // lexical order 
}

答案 1 :(得分:-2)

尝试将字符串转换为字符,然后对其进行排序。对字符进行排序比较容易,因为它们代表import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { Routes, RouterModule } from '@angular/router'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { ContactsDetailsComponent } from './contacts-details.component'; import { ReportModule } from '../report/report.module'; const routes: Routes = [ { path: '', data: { title: 'Contacts Details', urls: [ { title: 'Dashboard', url: '/dashboard' }, { title: 'Contacts', url: '/contacts' }, { title: 'Contacts Details' } ] }, component: ContactsDetailsComponent } ]; @NgModule({ imports: [FormsModule, CommonModule, RouterModule.forChild(routes), NgbModule.forRoot(), ReportModule /* <-- When import ReportModule content of ContactsDetailsComponent (html) is overwrites */ ], declarations: [ContactsDetailsComponent], exports: [ContactsDetailsComponent], }) export class ContactsDetailsModule {} 个代码字符。

例如:ascii等于65,A等于70,而F等于72。

由于65 <70 <72,因此排序方式为HAF

在此处查看H代码表:https://en.wikipedia.org/wiki/ASCII#Printable_characters