我使用另一个将任何STL顺序容器作为参数的函数库中的函数。只是为了争辩,我会保留它作为std::vector
。C++:从向量作为参数的子向量作为函数的参数
do_something (std::vector<double>& k)
{
...
}
我有数据的一整个vector
(恰好是double
类型)有一种方法来传递的子载体优选通过参照与无手之前复制和分裂矢量,该功能?这是直接通过复制(通过简单地复制子向量,返回vector
功能,并将各自的子向量回到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--]);
任何帮助表示赞赏,即使它是不可能的,如果你知道一种方法来来回拷贝效率
注:如果它的任何帮助,因此程序员,我的载体将是相同的大小与相同的预定位子矢量不等于myVector.begin()
或myVector.back()
。此外,这将永远不会改变那一个载体
使用迭代器,或者如果你想稍微好些的语法,可以使用类似[boost :: adapters :: sliced](http://www.boost.org/doc/libs/1_53_0/libs/range/doc/html /range/reference/adaptors/reference/sliced.html)。 – Mankarse