Мы многократно указывали на недостатки встроенных массивов: они неявно преобразуют указатели при малейшем поводе, их нельзя скопировать с помощью присваивания, они не знают своего размера и т.д. Кроме того, мы отмечали их преимущества: они превосходно моделируют физическую память.
Также возможно вы думаете, что такая тема как http://alphatab.ru/prolong/pforcesuper/ никак не связана и даже не тематична с программированием. Хотя, может быть и связана.
В любом случае все-таки зайдите на сайт alphatab.ru - там можно узнать много интересного про то, где есть цена super p-force и сколько стоит super p-force . Что означает вообще цена super p-force , где находится цена super p-force - про это написано на сайте alphatab.ru. Это важная для многих тема - цена super p-force . Спасибо сайту alphatab.ru за информацию про то, где есть цена super p-force
Для того чтобы использовать преимущества массивов и контейнеров, мы можем создать контейнер типа array, обладающий достоинствами массивов, но не имеющий их недостатков. Вариант класса array был включен в стандарт как часть технического отчета Комитета по стандартизации языка С++. Поскольку свойства, включенные в этот отчет, не обязательны для реализации во всех компиляторах, класс array может не содержаться в вашей стандартной библиотеке. Однако его идея проста и полезна.
0 template // не вполне стандартный массив struct array {
typedef T value_type; typedef T* iterator; typedef T* const_iterator;
typedef unsigned int size_type; // тип индекса T elems[N];
// не требуется явное создание/копирование/уничтожение
iterator begin() { return elems; } const_iterator begin() const { return elems; } iterator end() { return elems+N; } const_iterator end() const { return elems+N; }
size_type size() const;
T& operator[](int n) { return elems[n]; }
const T& operator[](int n) const { return elems[n]; }
const T& at(int n) const; // доступ с проверкой диапазона T& at(int n); // доступ с проверкой диапазона
T * data() { return elems; }
const T * data() const { return elems; }
};
Это определение не полно и не полностью соответствует стандарту, но оно хорошо иллюстрирует основную идею. Кроме того, оно позволяет использовать класс array, если его нет в вашей стандартной библиотеке. Если же он есть, то искать его следует в заголовке . Обратите внимание на то, что поскольку объекту класса array известен его размер N, мы можем (и должны) предусмотреть операторы =, ==, != как для класса vector.
Например, используем массив со стандартной функцией high(): void f()
{
array a = { 0.0, 1.1, 2.2, 3.3, 4.4, 5.5 }; array::iterator p = high(a.begin(), a.end()); cout << "максимальное значение " << *p << endl;
}
Обратите внимание на то, что мы не думали о классе array, когда писали функцию high(). Возможность применять функцию high() к объекту класса array является простым следствием того, что в обоих случаях мы придерживались стандартных соглашений.
Опубликовал katy
April 22 2015 21:48:21 ·
0 Комментариев ·
2769 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.