У меня есть библиотека, которая ожидает массив и заполняет его. Я хотел бы использовать std :: vector вместо массива. Так что вместо
int array[256];
object->getArray(array);
Я бы хотел сделать:
std::vector<int> array;
object->getArray(array);
Но я не могу найти способ сделать это. Есть ли шанс использовать для этого std :: vector?
Спасибо за чтение!
EDIT:
Я хочу разместить обновление для этой проблемы:
Я играл с C ++ 11 и нашел лучший подход. Новое решение заключается в использовании функции std :: vector.data () для получения указателя на первый элемент.
Таким образом, мы можем сделать следующее:
std::vector<int> theVec;
object->getArray(theVec.data()); //theVec.data() will pass the pointer to the first element
Если мы хотим использовать вектор с фиксированным количеством элементов, мы лучше вместо этого используем новый тип данных std :: 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 C ++ 2010. Помните: это код C ++ 11, поэтому вам понадобится компилятор, который поддерживает эти функции!
Ответ ниже остается в силе, если вы не используете C ++ 11!