int main() { { // sample(c_range_usage_1) const int num = num_xs(); for (int i = 0; i < num; ++i) { const X * x = get_x(i); use(x); } // end-sample } { // sample(c_range_usage_2) const int num = num_xs(); std::vector<X*> xs(num); get_xs(&xs[0]); for (auto x : xs) { use(x); } // end-sample } { // sample(c_range_usage_3) int num = num_xs(); // some code to here change num, // in order to take a subset of num_xs() ... for (int i = 0; i < num; ++i) { const X * x = get_x(i); use(x); } // end-sample } { // sample(c_range_usage_4) int num = num_xs(); // Fiery explosion when i == num - 1. // If we're lucky. for (int i = 0; i < num; ++i) { const X * x = get_x(i); if (i == some_index()) remove_x(i); use(x); } } // end-sample { // sample(c++_lazy_range_usage) x_range range = get_xs(); for (auto const & x : range) { use(x); } // This will use memcpy for PODs, etc. std::vector<X> copy_of_xs(size(range)); std::copy(begin(range), end(range), copy_of_xs.begin()); // end-sample } return 0; }
X():xs(get_xs()) {}