【发布时间】:2020-09-10 12:50:27
【问题描述】:
为什么vector.push_back(s) 在这里不起作用,而vector[i]=s 起作用(作为评论提及)?如果我使用 push_back 函数,则不会打印任何内容。 vec[i]=s 工作得很好,但为什么 push_back 不工作?我希望这两种替代方案都能同样出色地运行,即在二维向量中打印存储的元素。
#include<iostream>
#include<vector>
#include<utility>
#include<stack>
#include<queue>
using namespace std;
int main()
{
int n;
cin>>n;
vector<vector<pair<int,int>>> vec(n);
for(int i=0;i<n;i++)
{
int m;
cin>>m;
vector<pair<int,int>> s;
for(int j=0;j<m;j++)
{
int x;
cin>>x;
s.push_back(make_pair(x,i+1));
}
vec.push_back(s);//vec[i]=s works here :-(
}
for(int i=0;i<n;i++)
for(int j=0;j<vec[i].size();j++)
cout<<vec[i][j].first<<" ";
return 0;
}
【问题讨论】:
-
由于您已经使用 n 个元素创建了向量 vec,push_back 将在这 n 个第一个元素之后添加更多元素。所以,要么改变“vec(n);”到“vec”或者使用注释“vec[i]”中的方式代替vec.push_back()。
-
您好,欢迎来到堆栈溢出!我在理解你的问题时遇到了一些麻烦。您能否修改问题以具体解决 A:您期望什么、B:您得到什么和 C:您尝试过什么?如果您能以这种方式具体地阐明问题所在,您更有可能获得帮助。还可以考虑阅读stackoverflow.com/help/how-to-ask,它有一些很棒的提示可以帮助我们帮助您!
-
@NativeCoder:你好!感谢您的评论。我已经编辑了可能会提高您对问题的理解的问题。请让我知道是否有任何要添加的内容以使其变得更好:)
-
@AMITPRASAD,也许更好的问题标题是“vector.push_back(VALUE) 和 vector[INDEX]=VALUE 之间有什么区别?”。我认为这将有助于其他人了解您需要帮助的地方。我们喜欢避免诸如“为什么这不起作用”之类的问题,因为这个问题并没有直接解决问题。当我阅读这个问题时,我仍然不确定您的期望。当您说“这在这里有效”时,“有效”是什么意思?预期的行为是什么?不仅仅是“我希望它们是等价的”,而是你希望具体发生什么。