Re[7]: как эффективно передать элементы из одного вектора в другой
От: watchmaker  
Дата: 07.04.16 21:07
Оценка:
Здравствуйте, _hum_, Вы писали:

__>это по правилу хорошего тона? ну, так его не всегда соблюдают. а в общем случае ведь никто не запретит просто забрать данные у x-value способом, делающим объект невалидным для последующих операций.


Бредовый пример. Мне кажется, что это всё равно, как если бы написать в своём контейнере что-то вроде
struct MyArray { 
  ...
  char* begin() const {
    return (char*)(rand() % 2 ? 0 : "begin");
  }
  char* end() const {
    return (char*)"end";
  }
};
а потом жаловаться, что range-based-for с таким классом не работает (да ещё и глючит каждый раз по разному), а поэтому range-based-for плохой и использовать его не надо.
А то ведь в стандарте тоже соглашения об смысле методов begin и end — не более чем "правила хорошего тона".


__>ну так для того, чтобы убедиться, что у вектора есть нулевое состояние и оно ничем не грозит, мне нужно лезть куда-то в доки и стандарты, в то время как swap делает это логически прозрачным.

А swap для двух объектов произвольного типа что делает? Неужели обменивает их состояние? Откуда у тебя такая уверенность в этом? Сомневаюсь, что разумный человек может быть в этом уверен без "залезания в доки" или без просмотра исходников. Ведь обменивающее поведение swap — не более чем правило хорошего тона!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.