Как я сортирую CArray определяемого пользователем типа?

Для назначения начального значения одному из участников вашего диалога вам не нужно отправлять ему сообщение.

Вы можете просто присвоить значение напрямую:

Таким образом, вместо

GetMain()->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);

у вас должно быть что-то вроде:

charteringDlg->thevalueorwhatever = 12;

И BTW:

GetMain()->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);

в любом случае неправильно, вы должны отправить сообщение в диалоговое окно, а не в главное окно:

charteringDlg->SendMessage(UWM_MYMESSAGE_CHARTERING, 0,(LPARAM)&temp);
6
задан Aardvark 29 October 2008 в 13:28
поделиться

1 ответ

std::sort() должен работать:

CArray<int> arrayOfInts;
arrayOfInts.Add(7);
arrayOfInts.Add(114);
arrayOfInts.Add(3);
std::sort(arrayOfInts.GetData(), arrayOfInts.GetData()+arrayOfInts.GetSize());

Это использует указатель на первый элемент в массиве как итератор запуска, и указатель на одно прошлое последний элемент как последний итератор (никогда не должен разыменовываться так или иначе, таким образом, все хорошо). Вы могли также передать в пользовательском предикате, если бы массив содержал более интересные данные:

struct Foo
{
  int val;
  double priority;
};

bool FooPred(const Foo& first, const Foo& second)
{
   if ( first.val < second.val )
      return true;
   if ( first.val > second.val )
      return false;
   return first.priority < second.priority;
}

//... 

   CArray<Foo> bar;
   std::sort(bar.GetData(), bar.GetData()+bar.GetSize(), FooPred);

О - и не используют CArray.

9
ответ дан 10 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

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