template <class T>
using Id_block = Pair;
// Теперь Id_block -- то же, что и Pair для любого T. #include #include // C++14, conditional_t, is_same usingnamespace std;
// Выбор встроенного целочисленного типа, имеющего ширину, // не менее Bits бит, или void, если подходящего типа нет. template using Uint =
conditional_t<(Bits <= 8), uint8_t,
conditional_t<(Bits <= 16), uint16_t,
conditional_t<(Bits <= 32), uint32_t,
conditional_t<(Bits <= 64), uint64_t,
void>>>>;
// Проверка условия, выполняемая во время компиляции. static_assert(is_same, uint32_t>::value, "Uint is flawed!");
vector ve; // пустойвектор assert(ve.empty());
vector vn(10); // векторразмера 10 // vn создаёт объекты со значением, возвращаемым конструктором без параметров, // для встроенных типов чисел это 0 assert(!vn.empty());
assert(vn.size() == 10);
assert(vn[0] == 0);
vector vi(10, 42); // вектор из 10 значений, равных 42 // в качестве второго параметра можно указать конкретное значение // создаваемых объектов assert(vi.size() == 10);
assert(vi[0] == 42);
int arr[] { 1, 2, 3, 4, 5 };
vector va(arr + 1, arr + 4); // копиядиапазонамассива // va содержит 3 элемента: 2, 3, 4 assert(va.size() == 3);
assert(va[0] == arr[1] && va[1] == arr[2] && va[2] == arr[3]);
// Наконец, вектор можно создать из конкретного набора значений, // используя фигурные скобки вместо круглых (C++11). vector vl { 1, 2, 3, 4 }; // можно также ставить "=": vl = { ... assert(vl.size() == 4);
assert(vl.front() == 1 && vl.back() == 4);
// Используем последний конструктор из примера выше. vector vl { 1, 2, 3, 4 };
// Повторно используем тот же конструктор // для создания временного объекта с заданным содержимым. // Обратите внимание -- необходимо указывать тип элемента вектора (здесь int). assert(( vl == vector { 1, 2, 3, 4 } ));
assert(( vl != vector { 2, 3, 4 } ));18>