小编Rog*_*vas的帖子

C++使用不同的代码来处理同一程序中的向量和列表的排序

我曾经typedef vector<MyDatatype> ls;只通过改变typedef定义来启用列表和向量之间的切换.除了sort函数之外,所有的工作都很好,对于向量,它实现的方式不同

void show(driver& ls)
{
    ls.sort(compare); //this line gives error
    driver::iterator iter=ls.begin();
    int i=1;
    while(iter!=ls.end())
    {
        cout<<i<<". "<<iter->name<<string(maxlength+1-(iter->name).size(),' ');
        streamsize prec=cout.precision(2);
        cout<<grade(*iter);
        cout.precision(prec);
        cout<<endl;
        i++; iter++;
    }
}
Run Code Online (Sandbox Code Playgroud)

做类似的事情:

if(typeid(ls)==typeid(list<string>)) ls.sort(compare);
else if(typeid(ls)==typeid(vector<string>)) sort(ls.begin(), ls.end(), compare);
Run Code Online (Sandbox Code Playgroud)

不会有任何好处.所以我的问题是:是否可以测试类型并相应地使用合适的排序函数,或者我是否必须编写自己的排序函数(或者可能将向量转换为列表)?我找不到任何相关的帖子.

c++ sorting list vector

2
推荐指数
1
解决办法
156
查看次数

标签 统计

c++ ×1

list ×1

sorting ×1

vector ×1