【问题标题】:How to return a zero based indices of a vector in C++如何在 C++ 中返回从零开始的向量索引
【发布时间】:2020-05-26 12:10:00
【问题描述】:

我有一个包含结构的向量。 例如:

structure A { int x; int y; int z;)
vector<A> myVectorA;

现在我需要一个函数,它告诉我返回 myVectorA 从 0 开始的索引,函数原型如下。

vector<size_t> get_A() const
{

}

我是初学者,不确定这个函数的用途以及从这个函数返回什么与vector&lt;size_t&gt;的返回类型相匹配。

有人可以帮忙吗?

编辑以添加更多信息。

我的向量myVectorA 是一个公共类成员,需要从vector&lt;size_t&gt; get_A() const 函数返回。但是查看函数原型,它返回vector&lt;size_t&gt; 所以我的问题是如何将一个结构A类型的向量(此处为myVectorA)转换为另一个vector&lt;size_t&gt;类型的向量

【问题讨论】:

  • 缺少参数,函数应该返回哪些索引并不清楚
  • myVectorA包含6个元素时,函数应该返回{0,1,2,3,4,5}
  • ...您需要将代码格式化为代码,例如通过{} 按钮,才能正确显示&lt;&gt;
  • "...不确定此功能的用途..." 如果您不知道,那么我们如何帮助您?
  • 顺便说一句,“0-based”应该不是问题。在 c++ 中索引总是从 0 开始

标签: c++ vector stl size-t


【解决方案1】:

你的问题不够清楚。看看下面的答案是不是你需要的。在下面的函数中,get_A 将以[x0,y0,z0,x1,y1,z1,...] 格式返回 myvectorA 的所有元素。

#include <bits/stdc++.h>
using namespace std;

struct A { int x; int y; int z;};


vector<size_t> get_A(vector<A> myVectorA)
{
    vector<size_t>a;
    for(int i=0;i<myVectorA.size();i++){
        a.push_back(myVectorA[i].x);
        a.push_back(myVectorA[i].y);
        a.push_back(myVectorA[i].z);
     }
    return a;

}

int main() {
    vector<A>myVectorA;
    A a{1,2,3};
    A b{4,5,6};
    A c{7,8,9};
    myVectorA.push_back(a); // myVectorA now becomes - [{1,2,3}]
    myVectorA.push_back(b);
    myVectorA.push_back(c);// now I have pushed 3 instances of struct A. myVectorA now becomes - [{1,2,3},{4,5,6},{7,8,9}]

    vector<size_t>res = get_A(myVectorA); //will return [1,2,3,4,5,6,7,8,9]
    for(int i=0;i<res.size();i++)
        cout<<res[i]<<" ";     //prints all elements of myVectorA
    return 0;
}

输出 -

1 2 3 4 5 6 7 8 9 

【讨论】:

猜你喜欢
  • 2011-11-11
  • 2020-01-22
  • 1970-01-01
  • 2016-06-03
  • 1970-01-01
  • 2017-09-01
  • 2020-06-18
  • 1970-01-01
相关资源
最近更新 更多