Примеры работы с vector — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Ulysses (обсуждение | вклад) |
Ulysses (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | <source lang="cpp"> | + | <source lang="cpp">// vector: (шаблон класса динамического массива) |
− | |||
− | // vector: | ||
#include <vector> | #include <vector> | ||
− | //rand: | + | //rand, srand: |
#include <cstdlib> | #include <cstdlib> | ||
+ | |||
+ | //time: | ||
+ | #include <ctime> | ||
+ | |||
+ | // cout, endl | ||
+ | #include <iostream> | ||
using std::vector; | using std::vector; | ||
using std::rand; | using std::rand; | ||
+ | using std::srand; | ||
+ | using std::time; | ||
+ | |||
+ | // случайное целое в диапазоне [0, n) | ||
+ | int random(int n) | ||
+ | { | ||
+ | return rand() / (double) RAND_MAX * n; | ||
+ | } | ||
+ | // вектор размера size из случайных целых по модулю не больше max | ||
vector<int> random_vector(int size, int max = 10) | vector<int> random_vector(int size, int max = 10) | ||
{ | { | ||
− | //. | + | vector<int> v; |
+ | for (int i = 0; i < size; ++i) | ||
+ | { | ||
+ | int sign = random(2) ? -1 : 1; | ||
+ | int x = random(max); | ||
+ | v.push_back(sign * x); // добавляем в вектор очередное число | ||
+ | } | ||
+ | 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() | int main() | ||
{ | { | ||
+ | srand(time(0)); | ||
vector<int> v = random_vector(5); | vector<int> v = random_vector(5); | ||
− | + | print_vector(v); | |
} | } | ||
</source> | </source> | ||
[[Категория:C++]] | [[Категория:C++]] |
Версия 23:55, 10 декабря 2013
// vector: (шаблон класса динамического массива)
#include <vector>
//rand, srand:
#include <cstdlib>
//time:
#include <ctime>
// cout, endl
#include <iostream>
using std::vector;
using std::rand;
using std::srand;
using std::time;
// случайное целое в диапазоне [0, n)
int random(int n)
{
return rand() / (double) RAND_MAX * n;
}
// вектор размера size из случайных целых по модулю не больше max
vector<int> random_vector(int size, int max = 10)
{
vector<int> v;
for (int i = 0; i < size; ++i)
{
int sign = random(2) ? -1 : 1;
int x = random(max);
v.push_back(sign * x); // добавляем в вектор очередное число
}
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);
}