Я постараюсь обобщить, что вы хотите, с некоторыми возможными ответами в зависимости от вашей ситуации. Вы говорите, что хотите новый вектор, который, по сути, представляет собой сжатую версию двух других векторов, которые содержат два разнородных типа. Где вы можете получить доступ к двум типам как к какой-то паре?
Если вы хотите сделать это более эффективным, вам нужно подумать о том, для чего вы используете новый вектор? Я вижу три сценария того, что вы делаете.
1) Мало что можно сделать, кроме копирования данных в новый вектор. Более подробно объяснил ответ Сэма Варшавчика.
3) Вы делаете что-то вроде ответа Шакиля, или здесь , или какой-то другой настраиваемый итератор.
2) Здесь вы вносите некоторую оптимизацию, когда вы копируете данные с нуля с использованием класса-оболочки. Примечание: класс-оболочка работает, если вам не нужно использовать фактический std :: vector < std :: pair> class. Вы можете создать класс, в котором вы перемещаете данные в него и создаете для них операторы доступа. Если вы можете сделать это, это также позволит вам разложить оболочку обратно на исходные два вектора без копирования. Нечто подобное может быть достаточно.
class StringIntContainer {
public:
StringIntContaint(std::vector& _string_vec, std::vector& _int_vec)
: string_vec_(std::move(_string_vec)), int_vec_(std::move(_int_vec))
{
assert(string_vec_.size() == int_vec_.size());
}
std::pair operator[] (std::size_t _i) const
{
return std::make_pair(string_vec_[_i], int_vec_[_i]);
}
/* You may want methods that return reference to data so you can edit it*/
std::pair, std::vector> Decompose()
{
return std::make_pair(std::move(string_vec_), std::move(int_vec_[_i])));
}
private:
std::vector _string_vec_;
std::vector int_vec_;
};
Вот запись в блоге о извлечении кадров из фильмов с помощью ffmpeg:
http://www.codza.com/extracting-frames-from-movies-on-iphone
Соответствующий проект на github: iFrameExtractor
Вы можете использовать lib, используемый ffmpeg чтобы извлечь кадр, подобный libh264
http://en.wikipedia.org/wiki/X264
Приложения Live TV на iPhone делают это.
Надеюсь, это поможет.
Тьерри
ответ на мой вопрос см. Здесь iphone sdk> 3.0. Значок видео? , который отвечает на этот