Массив строк вида C++

Я пытаюсь отсортировать массив строк, но он не сортирует ничего...., что я делаю неправильно?

string namesS[MAX_NAMES];

int compare (const void * a, const void * b){
    return ( *(char*)a - *(char*)b );
}


void sortNames(){

    qsort(namesS, MAX_NAMES, sizeof(string), compare);
}
18
задан skaffman 10 May 2010 в 13:59
поделиться

3 ответа

Это C++, а не C. Сортировка массива строк проста.

#include <string>
#include <vector>
#include <algorithm>

std::vector<std::string> stringarray;
std::sort(stringarray.begin(), stringarray.end());
45
ответ дан 30 November 2019 в 06:01
поделиться

std :: qsort унаследован от стандартной библиотеки C. Он не будет работать.

Вам нужно использовать std :: sort для сортировки строк.

В частности, приведение std :: string к void * , а затем к char * не определено и не будет работать.

9
ответ дан 30 November 2019 в 06:01
поделиться

алгоритм сортировки в CPP имеет ту же сложность, что и qsort:

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

bool compare(string a, string b){
    cout << "compare(" << a << "," << b << ")" << endl;
    return (a.compare(b) < 0);
}

int main () {

    string mystrs[] = {"www","ggg","bbb","ssss","aaa"};
    vector<string> myvector (mystrs, mystrs + 5);               
    vector<string>::iterator it;

  sort (myvector.begin(), myvector.end(), compare);

  cout << "vector contains:";
  for (it=myvector.begin(); it!=myvector.end(); ++it)
    cout << " " << *it;

  cout << endl;

  return 0;
}
6
ответ дан 30 November 2019 в 06:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: