c++ - Multidimensional Vector? -
so started learning c++ , i'm trying figure out how access multidimensional vector or vector vectors stored inside of it. i've looked on , can't find i'm looking for. want able test contents of each vector inside of multidimensional vector printing them out. whenever try see size of vector after each iteration, i'm getting random constants each iteration. may memory locations i'm not sure.
#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { int numofarrays; int numofqueries; vector<vector<int>> arr(numofarrays); cin >> numofarrays; cin >> numofqueries; int arrsize; int number; vector<int> indarr; // outer loop, appends vectors containing ints multidimensional vector (int = 0; < numofarrays; i++) { cin >> arrsize; // getting number of elements user // inner loop, gets user inputted values creates vector added multidimensional vector (int x = 0; x < arrsize; x++) { cin >> number; indarr.push_back(number); cout << "last number added vector: " << number << endl; // checking see if correct numbers being added. } arr.push_back(indarr); cout << "multidimensional vector size: " << arr.size() << endl; // checking size of vector after each iteration indarr.clear(); // empties vector next iteration } return 0; }
as new c++, welcome constructive criticism.
newly revised code:
#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { int numofarrays; int numofqueries; cin >> numofarrays; cin >> numofqueries; vector<vector<int>> arr(numofarrays); // outer loop, appends vectors containing ints multidimensional vector (int = 0; < numofarrays; i++) { int arrsize; vector<int>indarr; cin >> arrsize; // getting number of elements user indarr.resize(arrsize); // resizing array next values // inner loop, gets user inputted values creates vector added multidimensional vector (int x = 0; x < arrsize; x++) { int number; cin >> number; indarr.push_back(number); cout << "last number added vector: " << number << endl; // checking see if correct numbers being added. } arr.push_back(indarr); cout << "multidimensional vector size: " << arr.size() << endl; // checking size of vector after each iteration } int test = arr[0][0]; cout << test; return 0; }
just tips:
vector<vector<int>> arr(numofarrays);
constructs vector of vectors of size numofarrays
. numofarrays not yet read cin, undefined number. care order of operations.
arr.push_back(indarr);
adds vector @ end of arr.
hence, in loop, if fix order of reading numofarrays
, declaring arr
, start array of size numofarrays
, , each cycle add element. end arr holding 2 times numofarrays
elements.
also, indarr
temporary variable, reset each cycle. although there nothing wrong doing, in general better keep each variable limited scope. if define indarr
inside loop, automatically cleared , re-created. may not efficient way things in cases, i'd leave details later.
something should work you:
#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; int main() { int numofarrays; int numofqueries; cin >> numofarrays; cin >> numofqueries; // unused variable vector<vector<int> > arr; // outer loop, set vectors containing ints multidimensional vector (int = 0; < numofarrays; i++) { int arrsize; vector<int> indarr; cin >> arrsize; // getting number of elements user // inner loop, gets user inputted values creates vector added multidimensional vector (int x = 0; x < arrsize; x++) { int number; cin >> number; indarr.push_back(number); cout << "last number added vector: " << number << endl; // checking see if correct numbers being added. } arr.push_back(indarr); cout << "multidimensional vector size: " << arr.size() << endl; // checking size of vector after each iteration } return 0; }
Comments
Post a Comment