我使用另一個將任何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