gpt4 book ai didi

c++ - 获取指向集合中原始数据的指针,如 &(vector[0])

转载 作者:搜寻专家 更新时间:2023-10-30 23:59:59 24 4
gpt4 key购买 nike

要获取指向 vector 中数据的指针,我们可以使用

vector<double> Vec;    
double* Array_Pointer = &(Vec[0]);
Function(Array_Pointer);

是否有可能获得指向集合中数据的指针?我可以像上面那样将它用作数组指针吗?


如果不可能,从集合中提取 vector 的最佳方法是什么?我的意思是没有遍历所有元素。

最佳答案

不,这不一定可能。 C++ ISO 标准明确保证 std::vector 中元素的连续存储,因此您可以安全地获取第一个元素的地址,然后像指向原始数组一样使用该指针。标准库中的其他容器没有此保证。

这样做的原因是为了有效地支持对 std::set 的大多数操作,实现需要使用复杂的数据结构,如平衡二叉搜索树来存储和组织数据。这些结构本质上是非线性的,需要分配节点并将其链接在一起。在标准规定的时间限制(大多数操作的分摊 O(log n))中,即使不是不可能,也很难有效地使它与平面数组中的元素一起工作。

编辑:针对您的问题 - 没有办法从 std::set 构建 std::vector一些代码在某处迭代集合并复制元素。您可以通过使用 std::vector 范围构造函数来执行此操作,而无需自己显式使用任何循环:

std::vector<T> vec(mySet.begin(), mySet.end());

希望这对您有所帮助!

关于c++ - 获取指向集合中原始数据的指针,如 &(vector[0]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14492894/

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