std::vector に C 配列としてアクセスする場合は、次の例でわかるように、少なくとも 4 つの異なる方法から選択できます。
#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()
。