如何解决如何访问指向其他向量的指针向量?我在C ++中尝试了hackerrank程序可变大小的数组:
考虑一个n元素数组a,,其中数组中的每个索引i 包含对k(i)个整数数组的引用(其中, k(i)因阵列而异)。
给出a,您必须回答q个查询。每个查询的格式为i j, 其中表示数组a中的索引,而j表示数组中的索引 位于a [i]。对于每个查询,查找并打印元素j的值 在新行中位置a [i]的数组中。
int n,q,k,input,r,s;
cin>>n>>q;
vector<int*> a;
vector<int> vec;
for(int i=0;i<n;i++)
{
cin>>k;
for(int j=0;j<k;j++)
{
cin>>input;
vec.push_back(input);
}
a.push_back(vec.data());
}
for(int m=0;m<q;m++)
{
cin>>r>>s;
cout<<endl<<*(a[r]+s);
}
解决方法
这里的主要问题是a
的每个成员都应指向一个不同数组。至少这是练习所暗示的。您使a
的所有元素都指向相同 vec
向量。
vec.data()
也会随着它的发展而不断变化,但是当您解决第一个问题时,这也许可以解决。
请注意,在C ++中,我们通常会使用std::vector<std::vector<int>>
来解决此问题。文字解释“数组中的每个索引i都包含一个 reference ”将不起作用,因为C ++引用不能是向量的成员,但是该练习似乎不是用C ++编写的心神。因此,“引用”并不表示C ++引用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。