У меня есть два вектора std::vector<Type1>
и std::vector<Type2>
с двумя разными несовместимыми типами Type1
и Type2
связанных размеров (например, sizeof(Type1)==2*sizeof(Type2)
).
Я хотел бы выполнитьswap()
операция, точно так же, как std::vector::swap()
, но между векторами с несовместимыми типами.
Причина: производительность.Я не хочу тратить время на копирование данных только потому, что типы номинально различаются, когда я знаю, что они де-факто совместимы как массивы.
Какой самый хороший способ в C ++ это сделать?
(Пожалуйста, не говорите мне, что мне нужно каким-то образом примирить Type1
и Type2
в один тип, я действительно не могу сделать это по причинам, выходящим за рамки этого вопроса.)
Образец:
std::vector<Type1> vec1 = getVec1(); // this returns the vector of Type1
std::vector<Type2> *vec2 = needThisFunctionThatCreatesVec2WithTheSameBuffer(&vec1); // ????? looking for
consumeVec2(vec2); // this consumes vec2