Сортировка wxWidgets wxVector

#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 существуют для обеспечения обратной совместимости, и их предпочтительно не использовать во вновь написанном коде