Конечно, можно
at
. Сделать это нетрудно. Мы окружим вызов функции at
блоком try
и определим код обработки ошибки в блоке catch
:try {
std::cout << "Out of range element value: "
<< v.at(container_size + 10) << '\n';
} catch (const std::out_of_range &e) {
std::cout << "Ooops, out of range access detected: "
<< e.what() << '\n';
}
std::array
at
.Сохраняем сортировку экземпляров класса std::vector
Массивы и векторы не сортируются самостоятельно. Если нам потребуется такая возможность, мы всегда можем воспользоваться структурами данных, которые предоставляют ее автоматически. Контейнер std::vector
Как это делается
В этом примере мы заполним контейнер std::vector
1. Сначала включим все необходимые заголовочные файлы:
#include
#include
#include
#include
#include
#include
2. Кроме того, объявим пространство имен std
std::
:using namespace std;
3. Далее напишем небольшую функцию main
int main()
{
vector
"without", "order", "aaa",
"yyy"};
4. Затем
is_sorted
из STL, показывающей, что изначально вектор assert(false == is_sorted(begin(v), end(v)));
sort(begin(v), end(v));
assert(true == is_sorted(begin(v), end(v)));
5. Наконец, добавим случайные слова в отсортированный вектор с помощью новой функции insert_sorted
insert_sorted(v, "foobar");
insert_sorted(v, "zzz");
6. Теперь реализуем функцию insert_sorted
main:
void insert_sorted(vector
{
const auto insert_pos (lower_bound(begin(v), end(v), word));
v.insert(insert_pos, word);
}
7. Теперь вернемся в функцию main
for (const auto &w : v) {
cout << w << " ";
}
cout << '\n';
}
8. Компиляция и запуск программы дадут следующий результат:
aaa foobar order random some without words yyy zzz
Как это работает
Вся программа построена вокруг функции insert_sorted
Позиция определяется с помощью функции STL lower_bound
Определив правильную позицию, мы передаем ее методу insert
std::vector
, который принимает всего два аргумента. Первый аргумент — итератор, указывающий на позицию в векторе, в которую будет вставлен второй параметр. Очень удобно, что можно использовать итератор, возвращаемый функцией lower_ bound
. Второй аргумент — это, конечно же, вставляемый элемент.Дополнительная информация