arrs.size() ")" endl;
sort(arrs, 0, arrs.size()-1 );
display(arrs);
return 0;
}
Если скомпилировать и запустить программу, то она напечатает следующее (эти строки искусственно разбиты на небольшие части):
sort array of doubles (size == 10)
1.7 5.7 11.7 14.9 15.7 19.7 26.7
37.7 48.7 59.7 61.7
sort array of ints (size == 16)
61 87 154 170 275 426 503 509 512
612 653 677 703 765 897 908
sort array of strings (size == 11)
"a" "falling" "heavy" "left" "police" "snow"
"station" "the" "they" "was" "when"
В числе обобщенных алгоритмов, имеющихся в стандартной библиотеке C++ (и в главе 12), вы найдете также функции min() и swap(). В главе 12 мы покажем, как их использовать.
2013-04-30 02:53:36 Dia
спасибо большое
2011-11-15 22:03:22 Максим
далеко не легкая тема!
11. Обработка исключений
Обработка исключений – это механизм, позволяющий двум независимо разработанным программным компонентам взаимодействовать в аномальной ситуации, называемой
11.1. Возбуждение исключения
Когда встречается аномальная ситуация, та часть программы, которая ее обнаружила, может сгенерировать, или
#include
class iStack {
public:
iStack( int capacity )
: _stack( capacity ), _top( 0 ) { }
bool pop( int ⊤_value );
bool push( int value );
bool full();
bool empty();
void display();
int size();
private:
int _top;
vector _stack;
iStack выглядит следующим образом:
};
Стек реализован на основе вектора из элементов типа int. При создании объекта класса iStack его конструктор создает вектор из int, размер которого (максимальное число элементов, хранящихся в стеке) задается с помощью начального значения. Например, следующая инструкция создает объект myStack, который способен содержать не более 20 элементов типа int:
iStack myStack(20);
При манипуляциях с объектом myStack могут возникнуть две ошибки:
* запрашивается операция pop(), но стек пуст;
* запрашивается операция push(), но стек полон.
Вызвавшую функцию нужно уведомить об этих ошибках посредством исключений. С чего же начать?
Во-первых, мы должны определить, какие именно исключения могут быть возбуждены. В C++ они чаще всего реализуются с помощью классов. Хотя в полном объеме классы будут представлены в главе 13, мы все же определим здесь два из них, чтобы использовать их как исключения для класса iStack. Эти определения мы поместим в заголовочный файл stackExcp.h:
// stackExcp.h
class popOnEmpty { /* ... */ };
class pushOnFull { /* ... */ };
В главе 19 исключения в виде классов обсуждаются более подробно, там же рассматривается иерархия таких классов, предоставляемая стандартной библиотекой C++.
Затем надо изменить определения функций-членов pop() и push() так, чтобы они возбуждали эти исключения. Для этого предназначена инструкция throw, которая во многих отношениях напоминает return. Она состоит из ключевого слова throw, за которым следует выражение того же типа, что и тип возбуждаемого исключения. Как выглядит инструкция throw для функции pop()? Попробуем такой вариант: