Error while using 2d Vectors in c++ -
vector <vector <int>> framevecs(4); vector <int> t1 = getpeaks (vec1); vector <int> t2 = getpeaks (vec2); vector <int> t3 = getpeaks (vec3); vector <int> t4 = getpeaks (vec4); framevecs[0].reserve(t1.size()); framevecs[1].reserve(t2.size()); framevecs[2].reserve(t3.size()); framevecs[3].reserve(t4.size()); framevecs.push_back (t1); framevecs.push_back (t2); framevecs.push_back (t3); framevecs.push_back (t4); i subscript out of range error during pushback part of snippet.
just 2 days code same thing:
vector <vector <int>> framevecs; framevecs.push_back (getpeaks (vec1)); framevecs.push_back (getpeaks (vec2)); framevecs.push_back (getpeaks (vec3)); framevecs.push_back (getpeaks (vec4)); and running fine last 2 months .. , started getting subscript out of range error in pushback part , hence had change thsi particular part 1 above it, , still getting error.
i mean, vectors uncertain in behavior ?
ps: getpeaks() returns int vector!
i think push_back doesn't think does.
vector <vector <int>> framevecs(4); passing 4 vector on construction creates 4 empty int-vectors. if push_back 4 vectors t1, t2, t3 , t4 add 4 vectors framevecs, have 8 entries in framevecs. maybe removing (4) , writing:
vector <vector <int>> framevecs; will solve problem.
if try access framevecs[0][0] example (although not shown in example) error.
after 4th push_back framevecs looks this:
framevecs[0] // empty framevecs[1] // empty framevecs[2] // empty framevecs[3] // empty framevecs[4] // contains t1 framevecs[5] // contains t2 framevecs[6] // contains t3 framevecs[7] // contains t4 calling reserve unnecessary in example.
Comments
Post a Comment