如何访问指向其他向量的指针向量?我在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 ++引用。