【发布时间】:2013-01-24 02:24:13
【问题描述】:
要获得指向向量中数据的指针,我们可以使用
vector<double> Vec;
double* Array_Pointer = &(Vec[0]);
Function(Array_Pointer);
是否有可能获得指向 set 中数据的指针?我可以像上面那样将它用作数组指针吗?
如果不可能,使向量脱离集合的最佳方法是什么?我的意思是没有循环遍历所有元素。
【问题讨论】:
-
在向量中,该数据是连续的。这将如何在一组中发挥作用?
-
数据容器在集合中也应该是连续的!为什么不?我指的不是元素的顺序,而是元素的存储。否则效率不高
-
不太可能。标准不能保证它是连续的,并且使其连续可能会破坏一些复杂性要求。
-
因为 set 的保证之一是插入、擦除和搜索操作都有 O(log(n)) 的复杂度。如果数据是连续的,就很难兑现承诺。
-
您也许可以使用
std::priority_queue而不是std::set;这个结构可能有连续的存储,并且是部分排序的,但不是完全排序的。
标签: c++ pointers vector set containers