возвращение столбца из стандартного вектора векторов слияния без копирования - PullRequest
0 голосов
/ 18 февраля 2012

У меня есть «таблица», представленная std::vector, где каждый элемент - boost::fusion::vector. Мне нужно вернуть представление "столбца" этой таблицы как std::vector, не копируя никакие значения. Каков наилучший способ сделать это? Я пытаюсь создать std::vector nviews, где n - номер столбца, но, похоже, он не работает. Я на правильном пути или есть другие способы сделать это?

1 Ответ

1 голос
/ 18 февраля 2012

Согласно документам здесь , метод at<N>(s) boost::fusion::vector возвращает ссылку на содержащийся элемент.

Также, если вы используете библиотеку наддува версии 1.48, они поддерживают семантику перемещения C ++ 11.Это означает, что у вас может быть функция, которая перебирает размер таблицы для определенного столбца no, скажем, i, и заполняет вектор столбца, который является std::vector.Затем вы просто возвращаете этот вектор-столбец, и вызывающая функция получает move d std::vector.В любой момент копии не создаются.

Подробнее о семантике перемещения можно прочитать здесь на самой странице стандартов.Вы также можете посмотреть видео Бьярн Страуструп, объясняющее его вкратце здесь .Перейти к минуте 37 и смотреть до минуты 43.

...