我使用来自另一个库的函数,该函数将任何 STL 顺序容器作为参数。只是为了争论,我将其保留为std::vector
.
do_something (std::vector<double>& k)
{
...
}
我有一个完整vector
的数据(碰巧是类型double
)有没有办法通过参考传递一个子向量,而不是事先复制和拆分向量,到这个函数?它通过复制直接进行(通过简单地复制subvector,返回vector
from 函数并将相应的子向量放回vector
)。为什么?:
- 我不想复制的原因完全是因为速度,我会多次调用这个函数(我的意思是很多次),性能是最重要的。
- 我不想事先拆分向量的原因是文件 IO 操作。顺序向量允许快速文件写入,特别是在二进制模式下
换句话说,我可以做这样的事情(在下面的伪代码示例中)吗?
std::vector<double> myVector{1.2, 5.6, 8.6, 2.2, 1.7, 9.1}; // myVeector of size 6
do_something (&myVector[ -- elementss 2,3,4--]);
任何帮助表示赞赏,即使不可能,并且如果您知道一种有效地来回复制的方法
注意:如果对 SO 程序员有任何帮助,我的向量将与相同的预定位子向量大小相同,不等于 frommyVector.begin()
或myVector.back()
。对于那个向量,这也永远不会改变