C++ 如何动态创建二维向量
C++ How to dynamically create a 2D vector
我正在尝试创建一个 n x n 向量,稍后我可以 cout
作为 table/matrix。 Xcode 指向 for
循环中的 =
并告诉我 No viable overloaded '='
。我不知道这意味着什么或如何解决它。
int n=5;
vector< vector<int> > row(n);
for (int i=0; i<n; i++) {
row[i] = new vector<int> column(n);
}
也试过这个,但是Xcode也不喜欢,这次指着column
说Expected ')'
:
int n=5;
vector< vector<int> > row;
for (int i=0; i<n; i++) {
row.push_back(new vector<int> column(n));
}
我猜这与我在 for
循环中声明新向量 column
的方式有关。非常感谢任何 help/advice。谢谢。
简单的解决方案是使用相关的 constructor of std::vector
,将其初始化为 n
个元素,每个元素的值为 val
- 无需循环。
std::vector<T> (n, val);
有了你的原始代码片段,我们将得到以下结果,它将初始化行以具有 n
std::vectors,每个具有 n
个元素。
std::vector<std::vector<int> > row (n, std::vector<int> (n));
尝试以下方法
int n = 5;
std::vector< std::vector<int> > row(n);
for (int i=0; i<n; i++) {
row[i].push_back( std::vector<int>(n) );
}
或
int n = 5;
std::vector< std::vector<int> > row(n, std::vector<int>( n ) );
当调用row
的构造函数时,所有元素也被初始化。
我认为这段代码可以满足您的需求:
for (int i=0; i<n; i++) {
row[i].resize(n);
}
现在行的所有元素的大小都是 n
。
我正在尝试创建一个 n x n 向量,稍后我可以 cout
作为 table/matrix。 Xcode 指向 for
循环中的 =
并告诉我 No viable overloaded '='
。我不知道这意味着什么或如何解决它。
int n=5;
vector< vector<int> > row(n);
for (int i=0; i<n; i++) {
row[i] = new vector<int> column(n);
}
也试过这个,但是Xcode也不喜欢,这次指着column
说Expected ')'
:
int n=5;
vector< vector<int> > row;
for (int i=0; i<n; i++) {
row.push_back(new vector<int> column(n));
}
我猜这与我在 for
循环中声明新向量 column
的方式有关。非常感谢任何 help/advice。谢谢。
简单的解决方案是使用相关的 constructor of std::vector
,将其初始化为 n
个元素,每个元素的值为 val
- 无需循环。
std::vector<T> (n, val);
有了你的原始代码片段,我们将得到以下结果,它将初始化行以具有 n
std::vectors,每个具有 n
个元素。
std::vector<std::vector<int> > row (n, std::vector<int> (n));
尝试以下方法
int n = 5;
std::vector< std::vector<int> > row(n);
for (int i=0; i<n; i++) {
row[i].push_back( std::vector<int>(n) );
}
或
int n = 5;
std::vector< std::vector<int> > row(n, std::vector<int>( n ) );
当调用row
的构造函数时,所有元素也被初始化。
我认为这段代码可以满足您的需求:
for (int i=0; i<n; i++) {
row[i].resize(n);
}
现在行的所有元素的大小都是 n
。