【发布时间】:2017-07-25 21:04:04
【问题描述】:
所以我最近开始学习 C++,并试图弄清楚如何访问多维向量或其中存储有向量的向量。我找遍了所有地方,但我找不到我要找的东西。我希望能够通过打印出来来测试多维向量中每个向量的内容。此外,每当我尝试在每次迭代后查看向量的大小时,我都会得到每次迭代的随机常数。它们看起来可能是内存位置,但我不确定。
#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 to a multidimensional vector
for (int i = 0; i < numofArrays; i++) {
cin >> arrSize; // Getting number of elements from user
// Inner loop, gets user inputted values then creates a vector which is added to the multidimensional vector
for (int x = 0; x < arrSize; x++) {
cin >> number;
indArr.push_back(number);
cout << "Last number added to vector: " << number << endl; // Checking to see if correct numbers are being added.
}
arr.push_back(indArr);
cout << "Multidimensional Vector size: " << arr.size() << endl; // Checking size of vector after each iteration
indArr.clear(); // Empties vector for next iteration
}
return 0;
}
由于我是 C++ 新手,我欢迎建设性的批评。
新修订的代码:
#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 to a multidimensional vector
for (int i = 0; i < numofArrays; i++) {
int arrSize;
vector<int>indArr;
cin >> arrSize; // Getting number of elements from user
indArr.resize(arrSize); // Resizing array for next values
// Inner loop, gets user inputted values then creates a vector which is added to the multidimensional vector
for (int x = 0; x < arrSize; x++) {
int number;
cin >> number;
indArr.push_back(number);
cout << "Last number added to vector: " << number << endl; // Checking to see if correct numbers are 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;
}
【问题讨论】:
-
你需要做的就是弄清楚如何使用向量,因为“多维向量”只是一个向量。
-
但是我以前使用过向量,它的行为不像任何向量。你能解释一下我做错了什么吗?为什么每当我打印出“cout
-
可能是一些无聊的东西,比如代码中的错误。
-
感谢 Henri 的一些实际建议,我会这样做,但这只是对 Hackerrank 的一个简单挑战。其他一切都很简单,但由于某种原因,我无法在多维向量中打印向量内部的值,并且每当我打印出大小时,它都会显示一个非常大的数字。
标签: c++ multidimensional-array vector