Моя цель - взять 3 стандартных целочисленных массива и использовать векторные методы для их манипулирования, не копируя все элементы массива в отдельный векторный массив.
Причина, по которой я хочу сделать это без копирования элементов массивапотому что это будут очень большие массивы и эффективность является приоритетом.
Вот два примера того, как я хотел бы, чтобы это выглядело:
- Простейший пример:
int arr[10000];
int *ptr;
std::vector<int> & v = ptr;
v.push_back(10);
Пример функции:
// Function that inputs 3 integer arrays and creates pointers to them.
void use_vector(int *dst, int *src1, int *src2) {
//creates vector references (without copying the original array elements)
std::vector<int> & v_dst = dst;
std::vector<int> & v_src1 = src1;
std::vector<int> & v_src2 = src2;
// do something using vector methods:
v_dst.push_back( v_scr1.size() + v_scr2.size() );
}
В обоих случаях я получаю это сообщение об ошибке:
error: invalid initialization of reference of type ‘std::vector<int>&’ from expression of type ‘int*’
std::vector<int> &v = ptr;
В идеале векторы являются ссылками (std :: vector &),но они также могут быть указателями (std :: vector *), если ссылки невозможны.