c++11 - vector<vector> to array in C++ -
c++11 - vector<vector<?>> to array in C++ -
i've read plenty of threads on vector array conversion, how vector<vector<?>> converted singly dimensioned array? discovered vector's data function; used somehow?
you're on right track .data() fellow member function, give array of objects of type std::vector<t>, not array of objects of type t. flatten nested vector need yourself. trick.
// 1. compute total size required. int total_size = 0; (auto& vec : vectors) total_size += vec.size(); // 2. create vector hold data. std::vector<t> flattened; flattened.reserve(total_size); // 3. fill (auto& vec : vectors) (auto& elem : vec) flattened.push_back(elem); // 4. obtain array auto ptr = flattened.data(); for older compilers, can iterate through vectors so
for (std::vector<std::vector<t> >::iterator iter = vectors.begin(); iter != vectors.end(); ++iter) { (std::vector<t>::iterator iter2 = iter->begin(); iter2 != iter->end(); ++iter2) { flattened.push_back(*iter2); } } or utilize plain old indices , .size() fellow member function.
internally, std::vector holds on pointer elements, , outermost data() must conceptually treated array of pointers, not 2d array. hence have manually walk through , flatten it.
arrays c++11 vector
Comments
Post a Comment