gpt4 book ai didi

c++ - std::vector: vec.data() 或 &vec[0]

转载 作者:IT老高 更新时间:2023-10-28 12:59:54 25 4
gpt4 key购买 nike

当您想以 C 数组的形式访问 std::vector 时,您可以从至少四种不同的方式中进行选择,如以下示例所示:

#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() 的文档。

最佳答案

data() 对 C++11 来说是全新的,这就是为什么你不经常看到它的原因。我从未想过使用 &vec.front() 的想法,可能是因为我使用 operator[]front() 更频繁(几乎从不)。我想其他人也一样。

关于c++ - std::vector: vec.data() 或 &vec[0],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10740094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com