मुझे पूरा यकीन नहीं है कि दो अनुक्रमों में से एक "संकल्प" इन दो अनुक्रमों में से एक है: यह मेरी समझ से अलग समझ प्रतीत होता है। नीचे इटरेटर की एक चर संख्या का उपयोग कर convolution का एक संस्करण है। क्योंकि मैं वास्तव में अभी बहुत आलसी हूं, मैं गंतव्य पुनरावर्तक को अंतिम तर्क के बजाए पहले तर्क के रूप में पारित करने की कुछ असामान्य धारणा का उपयोग करूंगा।
#include <deque>
#include <iostream>
#include <iterator>
#include <list>
#include <vector>
enum class e { a = 'a', b = 'b', c = 'c' };
std::ostream& operator<< (std::ostream& out,
std::tuple<int, double, e> const& v)
{
return out << "["
<< std::get<0>(v) << ", "
<< std::get<1>(v) << ", "
<< char(std::get<2>(v)) << "]";
}
int main()
{
typedef std::tuple<int, double, e> tuple;
std::vector<int> v{ 1, 2, 3 };
std::deque<double> d{ 1.1, 2.2, 3.3 };
std::list<e> l{ e::a, e::b, e::c };
std::vector<tuple> r;
algo::zip(std::back_inserter(r), v.begin(), v.end(), d.begin(), l.begin());
std::copy(r.begin(), r.end(),
std::ostream_iterator<tuple>(std::cout, "\n"));
}
स्रोत
2012-11-17 01:27:27
यह एक लिखने के लिए मुश्किल नहीं है:
नीचे एक साधारण परीक्षण कार्यक्रम मुझे लगता है कि इसके बाद के संस्करण की पुष्टि करने के लिए प्रयोग किया जाता है मुझे क्या करना यह इरादा है: यहाँ एक इसी
zip()
एल्गोरिदम के एक कार्यान्वयन है जो शुरू में शून्य से भरा तीसरी रेंज में जोड़ता है। जगह में, मुझे नहीं पता। – ascheplerमान लीजिए कि यह एक अलग संकल्प होगा जहां श्रेणियां एक ही लंबाई लिख रही हैं, यह बहुत कठिन नहीं है - यह काफी बदलाव के समान होगा। असल में, आप रिवर्स इटरेटर के तीसरे पैरामीटर के साथ ऐसा करने के लिए ट्रांसफॉर्म का उपयोग करने में भी सक्षम हो सकते हैं। – Yuushi