Примеры работы с vector — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Ulysses (обсуждение | вклад) |
Ulysses (обсуждение | вклад) |
||
Строка 34: | Строка 34: | ||
{ | { | ||
vector<int> v; | vector<int> v; | ||
+ | v.reserve(size); // резервируем место под size элементов -- это | ||
+ | // необязательно, но потенциально эффективней | ||
for (int i = 0; i < size; ++i) | for (int i = 0; i < size; ++i) | ||
{ | { |
Версия 07:18, 11 декабря 2013
// vector: (шаблон класса динамического массива)
#include <vector>
// cout, endl
#include <iostream>
//rand, srand:
#include <cstdlib>
//time:
#include <ctime>
using std::rand;
using std::srand;
using std::time;
using std::vector;
// случайное целое в диапазоне [0, n)
int random(int n)
{
return rand() / (double) RAND_MAX * n;
}
// случайное целое в диапазоне (-n, n)
int random_sgn(int n)
{
int sign = random(2) ? -1 : 1;
return random(n) * sign;
}
// вектор размера size из случайных целых по модулю не больше max
// если при вызове функции второй аргумент не задан, то max = 10
vector<int> random_vector(int size, int max = 10)
{
vector<int> v;
v.reserve(size); // резервируем место под size элементов -- это
// необязательно, но потенциально эффективней
for (int i = 0; i < size; ++i)
{
v.push_back(random_sgn(max)); // добавляем в вектор очередное число
}
return v;
}
// печать вектора: обратите внимание на передачу по ссылке на константу
template <typename Vec> // шаблон функции: печатает вектор любого типа
void print_vector(Vec const & v)
{
for (int i = 0; i < v.size(); ++i)
{
std::cout << v[i] << std::endl;
}
}
int main()
{
srand(time(0));
vector<int> v = random_vector(5);
print_vector(v);
}