C ++ 11 предоставляет метод data()
для std::vector
, который возвращает T*
.Это позволяет вам:
#include <iostream>
#include <vector>
int main()
{
std::vector<int> vector = {1,2,3,4,5};
int* array = vector.data();
std::cout << array[4] << std::endl; //Prints '5'
}
Однако выполнение этого (или любого из методов, упомянутых выше) может быть опасным, так как указатель может стать недействительным, если вектор был изменен.Это может быть показано с помощью:
#include <iostream>
#include <vector>
int main()
{
std::vector<int> vector = {1,2,3,4,5};
int* array = vector.data();
vector.resize(100); //This will reserve more memory and move the internal array
//This _may_ end up taking the place of the old array
std::vector<int> other = {6,7,8,9,10};
std::cout << array[4] << std::endl; //_May_ now print '10'
}
Это может привести к сбою или к чему-либо еще, поэтому будьте осторожны, используя это.