Если вы хотите получить доступ к std::vector как к массиву C, вы можете выбрать по крайней мере четыре различных способа, как вы можете видеть в этом примере:
#include <iostream>
#include <vector>
using namespace std;
int main() {
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(42);
vec.push_back(24024);
{
int* arr = vec.data();
cout << arr << endl; /* output: 0x9bca028 */
cout << arr[3] << endl; /* output : 24024 */
}
{
int* arr = &vec.front();
cout << arr << endl; /* output: 0x9bca028 */
cout << arr[3] << endl; /* output : 24024 */
}
{
int* arr = &vec[0];
cout << arr << endl; /* output: 0x9bca028 */
cout << arr[3] << endl; /* output : 24024 */
}
{
int* arr = &vec.at(0);
cout << arr << endl; /* output: 0x9bca028 */
cout << arr[3] << endl; /* output : 24024 */
}
}
Тот, который я в большинстве случаев это &vec[0]
. Я думаю, что это наименее элегантно, так что... почему это чаще всего используется? Является ли он более эффективнымили более совместимым? Я не могу найти много документации о data()
.