获取指向原始数据的指针,如&(vector [0])

Hes*_*sam 2 c++ containers pointers vector set

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

vector<double> Vec;    
double* Array_Pointer = &(Vec[0]);
Function(Array_Pointer);
Run Code Online (Sandbox Code Playgroud)

是否可以获取指向集合中数据的指针?我可以像上面那样使用它作为数组指针吗?


如果不可能,将一个向量设置为最佳方法是什么?我的意思是没有循环所有元素.

tem*_*def 6

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

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

编辑:回答你的问题 - 没有办法建立std::vector一个std::set没有一些代码迭代集合并复制元素.您可以在不使用std::vector范围构造函数自己明确使用任何循环的情况下执行此操作:

std::vector<T> vec(mySet.begin(), mySet.end());
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!