में तत्वों के आधार पर` std :: vector` को टुकड़ा कैसे करेंमें तत्वों के आधार पर std::vector
स्लाइस करने का कोई अच्छा तरीका है? दूसरे शब्दों में, std::set
के तत्व वेक्टर में जो इंडेक्स चाहते हैं उन्हें पकड़ें। निश्चित रूप से, मैं कोड के साथ ऐसा कर सकते हैं:`std :: set`
#include <set>
#include <vector>
#include <iostream>
#include <iterator>
template <typename T>
std::vector <T> slice(
std::vector <T> const & x,
std::set <unsigned int> const & I
) {
auto y = std::vector <T>();
for(auto const & i : I)
y.push_back(x[i]);
return y;
}
int main() {
auto x = std::vector <double> { 1.2, 2.3, 3.4, 4.5, 5.6};
auto I = std::set <unsigned int> { 0, 3, 4};
auto y = slice(x,I);
std::copy(y.begin(),y.end(),std::ostream_iterator <double>(
std::cout,"\n"));
}
जो सही ढंग से
1.2
4.5
5.6
रिटर्न बहरहाल, यह एक छोटे से अनाड़ी लगता है। क्या कोई बेहतर तरीका है?
मत भूलना 'std :: वेक्टर :: reserve'। – LogicStuff