#c #sorting #vector #wxwidgets
#c #сортировка #вектор #wxwidgets
Вопрос:
У меня проблема с сортировкой вектора. У меня есть код, подобный приведенному ниже, и я не понимаю, почему эта функция сортировки не сортирует мой вектор. Я также пробовал wxVectorSort и также не работал
wxTextFile file( wxT("myfile.txt") );
wxString text;
wxVector<wxString> fileLines;
wxString pobierz;
file.Open();
for(size_t i=0; i<file.GetLineCount(); i ){
text << file.GetLine(i)<< wxT("n");
fileLines.push_back(text);
}
file.Close();
sort(fileLines.begin(), fileLines.end());
for (wxVector<wxString>::iterator it = fileLines.begin() ; it != fileLines.end(); it){
TextCtrl_wczytaj->SetValue(*it);
}
Может кто-нибудь дать несколько советов, как отсортировать этот вектор? Спасибо за любой ответ
Ответ №1:
Предполагая, что вы ссылаетесь на сортировку чисел, как в «11» против «2» (как в этом очень похожем сообщении на форуме wxWidgets), вы можете попробовать использовать wxSortedArrayString
и одну из доступных функций сортировки:
wxStringSortAscending
wxDictionaryStringSortAscending
wxNaturalStringSortAscending
(и их *Descending
аналоги)wxCmpNatural
wxCmpNaturalGeneric
wxSortedArrayString sas(wxNaturalStringSortAscending); sas.Add("2"); sas.Add("11"); sas.Add("3"); // final order is {"2", "3", "11"}
Ответ №2:
Кроме того, имейте в виду, что настоятельно рекомендуется использовать std::vector, std::list и т. Д. По сравнению с их аналогами wx.
классы контейнеров wx существуют для обеспечения обратной совместимости, и их предпочтительно не использовать во вновь написанном коде