Передача итератора в другую функцию - PullRequest
0 голосов
/ 06 декабря 2009

Мне было интересно, что будет лучшим способом сделать что-то подобное ...

// Iterating through a list
if ( foo ) {
  RemoveBar( it ); 
}

void RemoveBar( std::list< Type >::iterator it ) {
  it = listName.erase( it );
  ...// Other stuff related to cleaning up the removed iterator
}

Я не думаю, что проход по значению будет работать здесь. Очевидно, что я хочу остаться в правильной позиции итератора, когда я вызываю RemoveBar. Является ли передача по ссылке лучшей альтернативой?

1 Ответ

5 голосов
/ 06 декабря 2009

Итераторы обычно передаются по значению. Я бы заставил RemoveBar () вернуть новый итератор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...