Как убедиться, что итераторы не выходят за пределы end ()?

Я использовал advance на некоторых итераторах , но я боюсь возможной чехарды выше end () . Я хотел бы убедиться, что мои итераторы остаются между границами, я подумал о расстоянии , но, похоже, он не возвращает то, что я ожидал (неположительные значения, когда итераторы превышают end () ). Как бы вы удостоверились в отсутствии чехарда?

#include <iostream>
#include <iterator>
#include <list>
using namespace std;

int main () {
  list<int> mylist;
  for (int i=0; i<10; i++) mylist.push_back (i*10);

  list<int>::const_iterator first = mylist.begin();
  const list<int>::const_iterator last = mylist.end();

  cout << "The distance is: " << distance(first,last) << endl; // 10
  advance(first, 10);
  cout << "The distance is: " << distance(first,last) << endl; // 0
  advance(first, 1);
  cout << "The distance is: " << distance(first,last) << endl; // 10
  advance(first, 10);
  cout << "The distance is: " << distance(first,last) << endl; // 0

  return 0;
}

Вот результат: CELERYD_LOG_FILE = r '/ var / log / celery / celeryd.log' CELERYD_LOG_LEVEL = "ERROR" Я просмотрел файл настроек ...

У меня есть следующие настройки в моем файле конфигурации сельдерея:

  1. CELERYD_LOG_DEBUG = 'FALSE'
  2. CELERYD_LOG_FILE = r '/ var / log / celery /celeryd.log'
  3. CELERYD_LOG_LEVEL="ERROR "

Я просмотрел файл настроек сельдерея, и нет возможности указать предельный размер файла журнала в конфигурации. Даже код выглядит так, как будто он использует StreamHandler вместо класса RotationHandler. Есть какие-нибудь подсказки / подсказки?

Спасибо.

13
задан narayana 4 October 2010 в 14:59
поделиться