Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <numeric>
- #include <list>
- using namespace std;
- void foo1(list<int>& l) {
- auto it = l.begin();
- while (it != l.end()) {
- if (*it % 2 == 1) {
- it = l.erase(it);//метод erase() удаляет элемент по итератору и возвращает итератор на следующий элемент
- } else {
- it++;
- }
- }
- }
- template <typename T>
- void foo2(T* arr, int size) {
- for (int i = 0; i + 1 < size; i += 2) {
- int tmp = arr[i];
- arr[i] = arr[i + 1];
- arr[i + 1] = tmp;
- }
- }
- int main() {
- //task1
- //возможно естьсмысл посмотреть на cppreference методы класса вектор и реализовать свой вектор (без итераторов)
- vector<int> v;
- //cout << v.size() << ' ' << v.capacity() << endl;
- //у вектора три основные параметры - это размер выделенной памяти (capacity), число элементов (size),
- //указатель на начало памяти в которой лежат элементы
- //при динамическом выделении памяти элементы не создаются. reserve - выделяет память, меняется параметр capacity
- v.reserve(200);
- //cout << v.size() << ' ' << v.capacity() << endl;
- //тут создастся 100 элементов конструктором по умолчанию для int
- v.resize(100);
- //v.resize(100, 21); //первый параметр - сколько элементов, второй - каких
- // cout << v.size() << ' ' << v.capacity() << endl;
- //push_back добавляет элементы если под них есть память и перевыделяет память, переписывает старые элементы,
- //очищает старую память и добавляет новый, если памяти было недостаточно
- for (int i = 0; i < 100; ++i) {
- v.push_back(i * i);
- }
- //cout << v.size() << ' ' << v.capacity() << endl;
- v.reserve(50);
- //cout << v.size() << ' ' << v.capacity() << endl;
- /*
- cout << endl;
- for (int i = 0; i < v.size(); ++i) {
- cout << i << ' ' << v[i] << endl;
- }
- */
- //task2
- list<int> l;
- for (int i = 0; i < 10; ++i) {
- l.push_back(i);
- }
- /*
- foo1(l);
- for (auto elem : l) {
- cout << elem << ' ';
- }
- */
- int arr[] = { 2, 3, 1};
- int a = accumulate(begin(arr), end(arr), 0, [&](const auto& init, const auto& rhs) {
- return init + rhs * rhs * rhs;
- });
- cout << a;
- /*
- foo2(arr, size(arr));
- for (int i = 0; i < size(arr); ++i) {
- cout << arr[i] << ' ';
- }
- */
- //5 нужно было добавить .push_back(move(ptr));
- //6
- //уюираем лишнее копирование, берем элемент по константной ссылке
- //for (const auto& person : persons)
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement