尽管我建议您对容器使用迭代器,但这是您的代码没有错误。如果您使用 C++,请尝试使用 C++。
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> create2dVector(const size_t , const size_t , const int );
vector<vector<int>> create2dVector(const size_t size1, const size_t size2, const int value)
{
vector<vector<int> > v( size1 , vector<int> (size2));
for (int i = 0; i < int(size1); i++) {
for (int j = 0; j < int(size2); j++){
v[i][j] = value;
}
}
return v;
}
int main() {
auto v = create2dVector(2, 5, 10);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 5; j++){
cout<< v[i][j]<< " ";
}
cout<< "\n";
}
return 0;
}
这就是我和推荐的方式。
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> create2dVector(const size_t , const size_t , const int );
vector<vector<int>> create2dVector(const size_t size1, const size_t size2, const int value)
{
vector<vector<int> > v( size1 , vector<int>(size2));
for(auto i = v.begin() ; i != v.end() ;++i)
{
vector<int>p;
for(int j=0;j<int(size2);++j)
{
p.push_back(value);
}
*i = p;
}
return v;
}
int main() {
auto v = create2dVector(2, 5, 10);
for(auto i : v)
{
for(auto j : i)
cout<< j<<" ";
}
return 0;
}