У меня есть библиотека, которая ожидает массив и заполняет его. Я бы хотел использовать std :: vector вместо использования массива. Таким образом, вместоConvert std :: vector to array
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<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!
Возможный дубликат [Как преобразовать вектор в массив C++] (http://stackoverflow.com/questions/2923272/how-to-convert-vector-to-array-c) – Trilarion