這裏是C++一個簡單的兩集裝箱拉鍊功能:C++壓縮可變參數模板
template <typename A, typename B>
std::list<std::pair<A, B> > simple_zip(const std::list<A> & lhs,
const std::list<B> & rhs)
{
std::list<std::pair<A, B> > result;
for (std::pair<typename std::list<A>::const_iterator,
typename std::list<B>::const_iterator> iter
=
std::pair<typename std::list<A>::const_iterator,
typename std::list<B>::const_iterator>(lhs.cbegin(),
rhs.cbegin());
iter.first != lhs.end() && iter.second != rhs.end();
++iter.first, ++iter.second)
{
result.push_back(std::pair<A, B>(*iter.first, *iter.second));
}
return result;
}
我怎麼會這樣擴大到與可變參數模板容器的任意號碼?
我想general_zip
接受list
的tuple
一個S(每個列表可以包含不同類型的),並返回tuple
的list
秒。
可能DUP(我仍然很享受!):http://stackoverflow.com/questions/6631782/implementing-a-variadic-zip -function-with-const-correctness – dirkgently
這個驚人的長初始化語句可以被重寫爲auto iter = std :: make_pair(lhs.cbegin(),rhs.cbegin())'。你的聲明是waaaaay很久。 – mfontanini
@fontanini真棒,非常感謝。 – user