要连接2个向量,可以执行以下操作:
template <typename T>
void concatenate(std::vector<T>& v, const std::vector<T>& v2)
{
v.insert(v.end(), v2.begin(), v2.end());
}
为了连接N个向量,你可以
template <typename T, typename ... Ts>
void concatenate(std::vector<T>& v, const Ts&... ts)
{
(v.insert(v.end(), ts.begin(), ts.end()), ...);
}
template <typename T>
void append(std::vector<T>& v, const std::vector<T>& v2)
{
v.insert(v.end(), v2.begin(), v2.end());
}
template <typename T>
void append(std::vector<T>& v, const T& value)
{
v.push_back(value);
}
然后
template<typename T, typename... Args>
void push_back_vec(std::vector<T>& v, Args&&... args)
{
(append(v, args), ...);
}
Demo