Когда вы хотите получить доступ к 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()
.