我有一個情況我有2個載體:C++矢量串接器以避免拷貝
vector<char> v1 = {1,3,4}
vector<char> v2 = {4,5,6}
這在現實中會變得非常大。
需要對這些載體是什麼,他們分別傳遞給函數與簽名:
template<class supports_[]_operator>
double absolutely_awesome_function(const supports_[]_operator& v)
然而,我還需要級聯的矢量被傳遞給這個函數。
即
v3= {1,3,4,4,5,6}
,在該點它永遠不會再次使用。
現在,很明顯,有很多方法可以簡單地創建一個新對象並將其傳入,但正如我所說的向量很大,'absolutely_awesome_function'非常快,所以這顯然不理想。
我想過做一個對象,像這樣:
template<class T>
class AmIAVector{
AmIAVector(const T& vec_1, const T& vec_2)
auto operator [](int i) const {return 'an index into either vec1 or vec2'}
}
但是,有沒有更好的方法/沒有的東西已經存在此
'模板':我會打我的同事做這樣的事情...... –
也許'absolutely_awe some_function'應該像大多數標準算法那樣採用迭代器,那麼你可以提供合適的開始和結束迭代器。像'boost :: join'可能也不錯:http://stackoverflow.com/questions/981186/chain-iterator-for-c或http://stackoverflow.com/questions/6747987/writing-an- iterator-that-makes-several-containers-look-as-one – doctorlove
@ torbjorn它只是爲了清晰起見 – user3684792