用户将元素输入到二维向量c++中
Posted
技术标签:
【中文标题】用户将元素输入到二维向量c++中【英文标题】:Input element by user into 2D vector c++ 【发布时间】:2016-04-26 23:27:23 【问题描述】:我正在尝试实现一种算法,我想将用户的元素输入到 2D 向量中,这样我就有了这样的元素:
reference 1:
1 2 3
3 2 1
1 2 3
所以我想知道如何将元素 push_back 到 2D 向量中
我的问题在这里:
std::vector<vector<int>> d;
//std::vector<int> d;
cout<<"Enter the N number of ship and port:"<<endl;
cin>>in;
cout<<"\Enter preference etc..:\n";
for(i=0; i<in; i++)
cout<<"ship"<<i+1<<":"<<' ';
for(j=0; j<in; j++)
cin>>temp;
d.push_back(temp);// I don't know how to push_back here!!
【问题讨论】:
【参考方案1】:C++是强类型语言,d
是vector的vector:
for(i=0; i<in; i++)
cout<<"ship"<<i+1<<":"<<' ';
vector<int> row;
for(j=0; j<in; j++)
cin>>temp;
row.push_back(temp);// I don't know how to push_back here!!
d.push_back(row);
【讨论】:
谢谢,关于打印,如果我尝试这样做 for(i=0; icout<<d[i]<<std::endl
哦,是的,你:)))【参考方案2】:
这里是解决方案
std::vector<vector<int>> d;
//std::vector<int> d;
cout<<"Enter the N number of ship and port:"<<endl;
cin>>in;
cout<<"\Enter preference etc..:\n";
for(i=0; i<in; i++)
cout<<"ship"<<i+1<<":"<<' ';
for(j=0; j<in; j++)
cin>>temp;
d[i].push_back(temp);
【讨论】:
【参考方案3】:这应该可行:
vector<vector<int> > d;
int val;
for(int i = 0; i < in; i++)
vector<int> temp;
for(int j = 0; j < in; j++)
cin >> val;
temp.push_back(val);
d.push_back(temp);
temp.clear();
【讨论】:
【参考方案4】:一般来说,我们可以按照下面提到的类似方法在二维向量矩阵中添加元素:
#include<bits/stdc++.h>
using namespace std;
int main()
int row,col;
cin>>row>>col;
vector<vector<int>>matrix;
for(int i=0;i<row;i++)
vector<int>temp;
for(int j=0;j<col;j++)
int val;
cin>>val;
temp.push_back(val);
matrix.push_back(temp);
return 0;
【讨论】:
【参考方案5】:d[x].push_back(y);
这应该适合你。
【讨论】:
【参考方案6】:有两种方法可以执行此任务:
vector<vector<int> > v;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
v[i].push_back(data);
vector<vector<int> > v;
for(int i=0;i<n;i++)
vector<int> x;
for(int j=0;j<m;j++) x[j].push_back(data);
v.push_back(x);
【讨论】:
【参考方案7】:/* Below takes user input for n x n array */
vector<vector <int>> arr(n);
for (int i = 0; i < n; i++)
arr[i].resize(n);
for (int j = 0; j < n; j++)
cin >> arr[i][j];
【讨论】:
【参考方案8】:这是你可以做的
int in;
std::cout << "Enter the N number of ship and port:" << std::endl;
std::cin >> in;
// declare a vector d of size 'in' containing vectors of size 0;
std::vector<std::vector<int>> d(in, std::vector<int>());
std::cout << "\Enter preference etc..:\n";
for(i=0; i<in; i++)
std::cout << "ship" << i+1 << ":" << ' ';
for(j=0; j<in; j++)
int temp;
std::cin >> temp;
d[i].push_back(temp); // now you can push_back here!!
【讨论】:
【参考方案9】:#include <iostream>
#include <vector>
using namespace std;
int main()
int N;
cout << "Please enter the no. of edges: ";
cin >> N;
vector<vector<int>> outer;
for(int i = 0; i < N; i++)
vector<int> temp;
for(int j = 0; j < 1; j++)
int u, v;
cin >> u;
cin >> v;
temp.push_back(u);
temp.push_back(v);
;
outer.push_back(temp);
temp.clear();
;
for(int i = 0; i<outer.size(); i++)
for(int j = 0; j < outer[i].size(); j++)
cout<<" "<<outer[i][j];
;
cout<<endl;
;
;
【讨论】:
输入如下:1 2 您应该详细说明您是如何回答问题的,而不是“%100 工作”。 @gurkan 很抱歉,我会尽我所能在所有即将发布的答案中,感谢您提醒我更正。【参考方案10】://this is a solution and it litrally works give it a try
//v(n) is must
//thats why your sol was giving problem
//we must specify rows
int main()
int value;
vector<vector<int>> v(n);
for(int i=0;i<n;++i)
for(int j=0;j<n;++j)
cin>>value;
v[i].push_back(value);
return 0;
【讨论】:
您的代码无法编译 -n
在哪里声明或定义?【参考方案11】:
vector<vector<int>> matrix; //declaring 2D vactor as matrix
int val;
cin>>val; //reading size of matrix in val
for(int i=0;i<val;i++)
vector<int> temp; //make temp vector for storing val for every iteration
for(int j=0;j<val;j++)
int x;
cin>>x;
temp.emplace_back(x);
matrix.emplace_back(temp); // push back to matrix, temp vector's all value for every iteration
temp.clear(); // clear temp vector for every iteration
【讨论】:
以上是关于用户将元素输入到二维向量c++中的主要内容,如果未能解决你的问题,请参考以下文章