У меня есть элементы в массиве, созданные из этой структуры:из массива приоритетной очереди
struct ks{
int cap;
int val;
};
Массива именованных элементов и содержит количественные элементы.
items = new ks[quantity];
Я хочу, чтобы поместить их в приоритетной очереди - которые в основном означает сортировку их.
Это моя функция сравнения:
struct itemsCompare{
bool operator() (const ks &item1, const ks &item2){
if (item1.val/item1.cap > item2.val/item2.cap) return true;
return false;
}
};
Как следует создать из этой очереди выглядит?
priority_queue <ks, What should I put here?, itemsCompare> comparedItems;
for(int i=0; i<quantity; i++) comparedItems.push(items[i]);
Я знаю, что для этого шаблона требуется вектор в качестве контейнера. Как мне изменить код, чтобы он работал? Я знаю, что я могу поместить элементы в вектор непосредственно перед объявлением очереди приоритетов, но мне любопытно, есть ли способ сделать это только с массивом.
Put 'зЬй :: вектор' там. –
Также, пожалуйста, сделайте * маленькую, простую * программу, которая оценивает выражения разделения, как вы предлагаете, и убедитесь, что они ведут себя так, как вы хотите. –
И заставить оператор вызова функции перегружать 'const'. –