У меня есть библиотека, которая ожидает массив и заполняет его. Я бы хотел использовать std::vector вместо использования массива. Поэтому вместо
int array[256];
object->getArray(array);
Я хотел бы сделать:
std::vector<int> array;
object->getArray(array);
Но я не могу найти способ сделать это. Есть ли возможность использовать std::vector для этого?
Спасибо за чтение!
EDIT: Я хочу поместить обновление для этой проблемы: Я играл с С++ 11 и нашел лучший подход. Новое решение - использовать функцию std::vector.data(), чтобы получить указатель на первый элемент. Поэтому мы можем сделать следующее:
std::vector<int> theVec;
object->getArray(theVec.data()); //theVec.data() will pass the pointer to the first element
Если мы хотим использовать вектор с фиксированным количеством элементов, мы лучше используем новый тип данных std:: array (btw, по этой причине имя массива "array", которое использовалось в вопросе выше, не должно быть больше используется!!).
std::array<int, 10> arr; //an array of 10 integer elements
arr.assign(1); //set value '1' for every element
object->getArray(arr.data());
Оба варианта кода будут корректно работать в Visual С++ 2010. Помните: это код С++ 11, поэтому вам понадобится компилятор, который поддерживает функции!
Ниже приведен ответ, если вы не используете С++ 11!