如何在 C++ 中 return 一个二维向量,它的所有元素都是 1
How to return a 2d vector in C++ which all of its elements are 1
我是 C++ 的新手,我想创建一个二维向量,它的所有元素都是 1。当我 运行 我的代码时,编译器 returns 什么都没有!
#include <iostream>
#include <vector>
using namespace std;
vector<vector<double>> ones2d(int m, int n) {
vector<vector<double>> vect;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++){
vect[i][j] = 1;
}
}
return vect;
}
int main(){
vector<vector<double>> vect = ones2d(2,3);
cout << vect[0][0] << endl;
}enter code here
vector<vector<double>> vect;
初始化一个空的向量向量(大小为 0),因此对其元素的任何访问都是越界的,这会导致未定义的行为。
获取具有某些默认值的 2D 向量的一种方法是:
vector<vector<double>> ones2d(int m, int n) {
// Create vector of n doubles, all initialized to 1
vector<double> dim1(n, 1);
// Create vector of vectors, containing m copies of dim1
vector<vector<double>> res(dim, m);
return res;
}
当然你可以把它组合成一行,但分解起来更容易理解。
resize()
函数用于将向量调整到指定大小。我们可以使用它来初始化具有给定默认值的 2d
向量:
std::vector<std::vector<double>> ones2d(int m, int n)
{
const int default_value = 1;
std::vector<std::vector<double>> vect(m);
for (int i = 0; i < m; i++)
vect[i].resize(n, default_value);
return vect;
}
或者您可以使用填充构造函数来初始化一个 2d
向量:
std::vector<std::vector<double>> ones2d_2(int m, int n)
{
const int default_value = 1;
return std::vector<std::vector<double>>(m, std::vector<double>(n, default_value));
}
我推荐使用第二种解决方案。
请试一试online
我是 C++ 的新手,我想创建一个二维向量,它的所有元素都是 1。当我 运行 我的代码时,编译器 returns 什么都没有!
#include <iostream>
#include <vector>
using namespace std;
vector<vector<double>> ones2d(int m, int n) {
vector<vector<double>> vect;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++){
vect[i][j] = 1;
}
}
return vect;
}
int main(){
vector<vector<double>> vect = ones2d(2,3);
cout << vect[0][0] << endl;
}enter code here
vector<vector<double>> vect;
初始化一个空的向量向量(大小为 0),因此对其元素的任何访问都是越界的,这会导致未定义的行为。
获取具有某些默认值的 2D 向量的一种方法是:
vector<vector<double>> ones2d(int m, int n) {
// Create vector of n doubles, all initialized to 1
vector<double> dim1(n, 1);
// Create vector of vectors, containing m copies of dim1
vector<vector<double>> res(dim, m);
return res;
}
当然你可以把它组合成一行,但分解起来更容易理解。
resize()
函数用于将向量调整到指定大小。我们可以使用它来初始化具有给定默认值的 2d
向量:
std::vector<std::vector<double>> ones2d(int m, int n)
{
const int default_value = 1;
std::vector<std::vector<double>> vect(m);
for (int i = 0; i < m; i++)
vect[i].resize(n, default_value);
return vect;
}
或者您可以使用填充构造函数来初始化一个 2d
向量:
std::vector<std::vector<double>> ones2d_2(int m, int n)
{
const int default_value = 1;
return std::vector<std::vector<double>>(m, std::vector<double>(n, default_value));
}
我推荐使用第二种解决方案。
请试一试online