【问题标题】:how can i access a vector of pointers pointing to other vectors? I tried the hackerrank program variable sized arrays in c++:如何访问指向其他向量的指针向量?我在c ++中尝试了hackerrank程序可变大小的数组:
【发布时间】:2020-12-28 19:54:30
【问题描述】:

考虑一个 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);
    
}  

【问题讨论】:

  • 我假设您的问题是“为什么这个看似有效的代码会崩溃?”但你还没有说你的问题是什么
  • 稍微努力一下,可能是三星级程序员级别。
  • @Caleth 是的,我只是在问这个问题。我刚刚发布了原始问题。

标签: c++ pointers vector


【解决方案1】:

这里的主要问题是a 的每个成员都应该指向一个不同的 数组。这至少是练习所暗示的。您使a 的所有元素都指向相同 vec 向量。

还有一个小问题,vec.data() 随着它的增长而不断变化,但当你解决第一个问题时,这可能已经解决了。

请注意,在 C++ 中,我们通常会使用 std::vector&lt;std::vector&lt;int&gt;&gt; 来解决这个问题。字面解释“数组中的每个索引 i 都包含一个 reference”是行不通的,因为 C++ 引用不能是向量的成员,但该练习似乎不是用 C++ 编写的头脑。因此,“引用”并不意味着 C++ 引用。

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2012-06-07
    • 2011-10-20
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2011-08-04
    • 2013-05-28
    • 2014-07-22
    相关资源
    最近更新 更多