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

Popular posts from this blog

java - How to set log4j.defaultInitOverride property to false in jboss server 6 -

c - GStreamer 1.0 1.4.5 RTSP Example Server sends 503 Service unavailable -

Using ajax with sonata admin list view pagination -