1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
А можно ли в priority_queue (ну и в ее подобных) в критерие сортировки указать (если равно чему-то то не соритровать)? Например, мне нужно сформировать heap, но чтобы первый элемент не был равен X.
P.S. И вот еще такой вопрос созрел: можно ли из вектора сделать что-то вроде двумерного массива (т.е. не 1 строка, а 2 например)? если да, то как, и как потом с этим работать?
template <class T> struct my_sort: public binary_function<T, T, bool> {
// функция должна быть константной, поскольку так же из константной и вызывается int s(int value) const { int sum = 0; while(value > 0) { sum += value %10; value /= 10; } return sum; }
// вот, собственно, что нам и требовалось: bool operator() (const T& first, const T& second) const { return s(first) > s(second); } };
int main() { const int n = 10; int arr[10] = {121, 311, 37, 114, 555, 436, 2117, 128, 979, 234}; priority_queue< int, vector<int>, my_sort<int> > q; for(int i = 0; i < n; i++) { q.push(arr[i]); }
while (q.size() > 0) { int value = q.top(); q.pop(); cout << value << endl; } return 0; }
Попробуй догадаться, в каком порядке будут выводиться числа из приоритетной очереди?
Цитата
можно ли из вектора сделать что-то вроде двумерного массива (т.е. не 1 строка, а 2 например)? если да, то как