gpt4 book ai didi

c++ - 通过原始指针访问整数 vector 的元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:25:12 24 4
gpt4 key购买 nike

我想知道下面的代码是否合法。

基本上我有一个 std::vector<int>我有一个处理 int 数组的遗留函数秒。作为 std::vector 的元素总是连续的代码应该总是有效(它实际上适用于我的实现),但对我来说它仍然看起来有点 hack。

#include <vector>
#include <iostream>

void LecagyFunction(int *data, int length)
{
for (int i = 0; i < length; i++)
std::cout << data[i] << std::endl;
}

int main()
{
std::vector<int> vector;
vector.push_back(5);
vector.push_back(4);
vector.push_back(3);
LecagyFunction(&vector[0], vector.size());
}

预期的输出是:

5
4
3

最佳答案

这不是 hack,而是 vector 的 100% 合法(和预期)使用。在 C++11 中,您的代码应该重写以利用 data()成员 - 与 operator[] 不同,它是为空 vector 定义的.

LecagyFunction(vector.data(), vector.size());

作为旁注,上述技术不适用于 vector<bool> ,因为后者不遵循常规 vector 的属性(这是一个糟糕的想法,现在每个人都明白了)。

关于c++ - 通过原始指针访问整数 vector 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40914470/

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