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


#22

Это конечно цикл for (auto x : v)

for_each - это не цикл


#23

Внимание!

По согласованию с дирекцией начало экзамена 11 и 12 января переносится на 9.00


#24

Станислав Станиславович, объясните, пожалуйста, зачем алгоритмам (не модифицирующим последовательность) find_first_of и search требуется ForwardIterator, разве не достаточно InputIterator?


#25

Отсюда:

ForwardIterator Может быть скопирован и использован для повторного обхода

А тут как раз копирование:

template<class ForwardIterator1, class ForwardIterator2>
  ForwardIterator1 search ( ForwardIterator1 first1, ForwardIterator1 last1,
                            ForwardIterator2 first2, ForwardIterator2 last2)
{
  if (first2==last2) return first1;  // specified in C++11
  
  while (first1!=last1)
  {
    ForwardIterator1 it1 = first1;
    ForwardIterator2 it2 = first2;
    while (*it1==*it2) {    // or: while (pred(*it1,*it2)) for version 2
        if (it2==last2) return first1;
        if (it1==last1) return last1;
        ++it1; ++it2;
    }
    ++first1;
  }
  return last1;
}

#26

Станислав Станиславович, скажите пожалуйста еще раз, что(как) нужно ответить на вопрос 46(Оптимизация RVO[Return value optimization]) просто у меня в тетради это плохо расписано


#27

Вот ссылка на конспект предыдущего года:

https://drive.google.com/file/d/11NG8Xq-V5HgEU2ABiCWg3sRxzjbpqaRS/view?usp=sharing

А лучше посмотреть в Интернете - если в вашем конспекте этого нет.


#28

Станислав Станиславович, уточните, пожалуйста, продолжительность письменной части составит 1 час?

И можно ли брать программу экзамена, разукрашенную текстовыделителем или она должна быть обязательно чистой?


#29

Да

Да, если кроме текстовыделителя там нет никаких пометок


#30

Вот, пример в ночь перед экзаменом:

Программа на C++ компилируется только если константа в её тексте - простое число:

template<bool V> struct answer 
{ 
  answer(int) {} 
  bool operator()()
  {
     return V;
  }
};

template<bool no, bool yes, int f, int p> struct IsPrimeHelper
  : IsPrimeHelper<p % f == 0, f * f >= p, f + 2, p> {};

template<bool yes, int f, int p> struct IsPrimeHelper<true, yes, f, p> 
{ 
   using type = answer<false>; 
};

template<int f, int p> struct IsPrimeHelper<false, true, f, p> 
{ 
   using type = answer<true>; 
};

template<int I> using IsPrime = typename IsPrimeHelper<!(I&1), false, 3, I>::type;

template<int I>
struct X { static const int i = I; int a[i]; }; 

template<typename A> struct foo;

template<>struct foo<answer<true>>
{
  template<int I> using typen = X<I>;
};

template<> struct foo<answer<false>>
{
  static const int typen = 0;
};

int main() 
{
  auto b = foo<IsPrime<234799>>::typen<1>(); // Syntax error if not prime
  return 0;
}

#31

Вот так вот я недавно выбил ошибок при компиляции одной библиотеки, мне кажется достаточно символичный скрин в завершении семестра 58bec04fe7bcf8d1