我有一种情况,我有2个向量:
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}
此时它再也不会被使用了。
现在,很明显,有很多方法可以简单地创建一个新对象并将其传递出来,但正如我所说的那样,矢量很大并且“绝对_功能”功能很强大。非常快,所以这显然不太理想。
我想过制作一个这样的物体:
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'}
}
但是这个
是否有更好的方式/已经存在的东西答案 0 :(得分:3)
有几种可能的解决方案。
由于absolutely_awesome_function
专门采用了矢量,因此您会被卡住。
通过重新设计,它可以像大多数stl算法那样使用迭代器,然后您可以提供合适的begin
和end
迭代器。
像boost :: join这样的东西就可以了。
boost::join(v1, v2)
相关问题: stackoverflow.com/questions/981186/chain-iterator-for-c,或Writing an iterator that makes several containers look as one
答案 1 :(得分:2)