从二维向量中获取用户的输入

Posted

技术标签:

【中文标题】从二维向量中获取用户的输入【英文标题】:take input from user in 2d vector 【发布时间】:2021-05-15 14:28:56 【问题描述】:

我试图从用户那里获取一个名为 alloc 的二维向量中的值,但分配零索引是唯一更改的索引,每个索引的值都会覆盖它我不知道为什么(即:只有第一个索引二维向量受到影响)

代码:

cout<<"Please Enter n"<<endl;
cin>>n;
cout<<"Please Enter m"<<endl;
cin>>m;


std::vector<vector<int>> alloc ;
int val;
cout<<"Please Enter values of allocation matrix"<<endl;
for(int i=0;i<n;i++)
vector <int> temp;
for(int j=0;j<m;j++)

cin>>val;
temp.push_back(val);

alloc.push_back(temp);
temp.clear();

【问题讨论】:

【参考方案1】:
for(int i=0;i<n;i++) 
  vector <int> temp;
  for(int j=0;j<m;j++) 
    cin>>val;
    temp.push_back(val);
  
  alloc.push_back(temp);
  temp.clear();

alloc.push_back(temp); 不会复制 temp,它只是将指向temp 的指针添加到alloc 的末尾。 temp [及其内容] 在 for(i) 循环退出后不再存在。

您需要动态分配“内部”向量实例,而不是使用堆栈对象 [即temp 在这种情况下]。

【讨论】:

以上是关于从二维向量中获取用户的输入的主要内容,如果未能解决你的问题,请参考以下文章

C ++中动态大小的二维数组中的用户输入

如何从输入字符串制作二维向量?

Numpy - 从数组中切片二维行或列向量

如何在 C# 中将用户输入添加到二维数组

我想通过在 C++ 中使用向量来获取用户输入,但我得到了无限循环

如何从文本文件中获取值并输入到二维数组中? C++