C ++ Vector Sort String Issue

时间:2015-12-01 01:58:28

标签: c++ string sorting vector

好吧,我有一个小任务,我需要使用std :: sort对字符串向量进行排序,但它不会排序任何"数字"以上两个正确消化。关键是我使用此API进行分配。

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    vector<string> Nums = { "1", "5", "34", "3", "6", "12", "21" };
    sort(Nums.begin(), Nums.end());
    for (int i = 0; i < Nums.size(); i++)
    {
        cout << Nums[i] << endl;
    }
    system("PAUSE");
}

结果:

1
12
21
3
34
5
6
Press any key to continue . . .

想要:

1
3
5
6
12
21
34

2 个答案:

答案 0 :(得分:2)

std::sort正在按照您的要求进行操作:它按字典顺序对字符串列表进行排序。要进行数字排序,您需要将自定义比较器传递给sort,它将字符串与数字进行比较。例如:

std::sort(std::begin(Nums), std::end(Nums)
          [] (const std::string& lhs, const std::string& rhs) {
              return std::stoi(lhs) < std::stoi(rhs);
          });

这使用标准库中的函数stoi将字符串转换为int进行比较。

答案 1 :(得分:0)

我以更简单的方式提供了相同的东西。您必须使用自定义 foreach($result['content'] as $res){ sum($res['member']); } 才能实现此目的。

^[<>]?\s?(\d{,4})?\.?(\d{1,4})?$