Курс Языки программирования (лекции) 3 семестр 18 г.

Шпаргалка.CPP_Crib_2018.pdf (156,1 КБ)

Презентация 1. 01_BeginCPP.pdf (333,8 КБ)

Презентация 2. 02_МногофайловаяКомпоновка.pdf (288,4 КБ)

А вот и безопасные массивы

Если можно, опубликуйте сам код

#include <iostream>
int main()
{
int a[5] = { 1,2,3,4,5 };
for (int i = 0; i < 1000000;i++)
{
	a[i] = 666;
	std::cout << a[i] << " ";
}

}

при этом, я заметил, что если идти например до 10, то компилятор выругается и что начиная с 1000 кол-во чисел 666 не увеличивается(я предпологаю, что это из-за засарения стека)

Станислав Станиславович, можете пожалуйста выложить схему, которая рассматривалась на лекции во вторник 20.11?

1 лайк

Самостоятельно разобраться в причинах вызова обычного/move конструктора/оператора= в классе cstring_vector так и не смог, поэтому выкладываю код, о котором я вам рассказывал, Станислав Станиславович. Надеюсь, сможете подсказать. Непосредственно вызовы (внутри реализованы все 4 метода - обычные и move версии конструктора и оператора= ):

cstring_vector ttt;
    ttt = ReadLines();
    /*Input string (1024 characters at most): 12
Input string (1024 characters at most):
cstring_vector move operator= invoked
cstring_vector copy constr invoked*/
    cstring_vector ttt1  = ReadLines();
    //*nothing*

Также, прикладываю файлы проекта. Пробовал Release и Debug конфигурации на Clang и GCC, результат не меняется.

cstring_utils.h (301 Байт) main.cpp (1,2 КБ) cstring_vector.h (4,7 КБ)

А в чём проблема - опишите?

Насколько я понял из лекций, в строке cstring_vector ttt1 = ReadLines(); должен вызываться move-конструктор, а в строке ttt = ReadLines(); происходить RVO (тогда бы не было вызова КК), но этого не происходит.

У меня в другом коде тут

myvec<int> f()
{
	myvec<int> v(10);
	return v;
}

происходит вызов move-конструктора, а тут

myvec<int> f()
{
	return myvec<int> v(10);
}

нет. Видимо, все научились тут делать RVO.

Станислав Станиславович, опубликуйте, пожалуйста, листики с последних лекций: контейнеры STL и стандартные алгоритмы

Алгоритмы STL.pdf (173,4 КБ) Контейнеры STL.pdf (121,9 КБ) set_map_ptrs.pdf (151,0 КБ)

Станислав Станиславович, опубликуйте, пожалуйста, раздаточный материал с последней лекции про ассоциативные контейнеры и умные итераторы

set_map_ptrs.pdf (151,0 КБ)

Станислав Станиславович, пожалуйста, выложите программу экзамена

Программа экзамена Program3Sem2018.pdf (196,6 КБ)

Что нужно ответить в вопросе программы 59. Клонирование полиморфных контейнеров? На лекции мы обсуждали только как создавать их и освобождать память, затем сразу перешли к виртуальным деструкторам

Напишите виртуальную функцию clone() и переопределите её в каждом потомке

Спасибо.

А что имеется в виду в вопросе 68. Цикл foreach и условия его применимости? Это условия на тип переменной v при использовании for (auto x : v) {/*...*/ } или при использовании for_each(begin(v), end(v), [](auto x) {/*...*/ }) ?