Study/C, C++ (MFC, UE)

[C++] Vector<String> 문자열 소트

BlueBright 2018. 5. 17. 11:03
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// SortTest.cpp: 콘솔 응용 프로그램의 진입점을 정의합니다.
//
 
#include "stdafx.h"
#include <vector>
#include <string>
#include <iostream>
#include <regex>
 
using namespace std;
 
bool my_compare(string &left, string &right)
{
 
    for (string::const_iterator lit = left.begin()
        , rit = right.begin()
        ; lit != left.end() && rit != right.end()
        ; ++lit, ++rit) {
        if (tolower(*lit) < tolower(*rit))
            return true;
        else if (tolower(*lit) > tolower(*rit))
            return false;
    }
 
    return left.size() < right.size();
}
 
int main()
{
    vector<string> stringList;
 
    stringList.push_back("a444");
    stringList.push_back("가44");
    stringList.push_back("444");
    stringList.push_back("b12");
    stringList.push_back("가12");
    stringList.push_back("나1");
    stringList.push_back("12");
    stringList.push_back("012");
    stringList.push_back("d379");
    stringList.push_back("379");
    stringList.push_back("0a79");
    stringList.push_back("c8");
    stringList.push_back("8");
    stringList.push_back("008");
 
    std::sort(stringList.begin(), stringList.end(), my_compare);
 
    for (std::string &each : stringList)
        std::cout << each << std::endl;
 
    return 0;
}
cs





SortTest.cpp