如何在 C++ 中返回从零开始的向量索引
Posted
技术标签:
【中文标题】如何在 C++ 中返回从零开始的向量索引【英文标题】:How to return a zero based indices of a vector in 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<size_t>
的返回类型相匹配。
有人可以帮忙吗?
编辑以添加更多信息。
我的向量myVectorA
是一个公共类成员,需要从vector<size_t> get_A() const
函数返回。但是查看函数原型,它返回vector<size_t>
所以我的问题是如何将一个结构A类型的向量(此处为myVectorA
)转换为另一个vector<size_t>
类型的向量
【问题讨论】:
缺少参数,函数应该返回哪些索引并不清楚 当myVectorA
包含6个元素时,函数应该返回0,1,2,3,4,5
?
...您需要将代码格式化为代码,例如通过
按钮,才能正确显示<>
"...不确定此功能的用途..." 如果您不知道,那么我们如何帮助您?
顺便说一句,“0-based”应该不是问题。在 c++ 中索引总是从 0 开始
【参考方案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 a1,2,3;
A b4,5,6;
A c7,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
【讨论】:
您的代码中有一个错误,一旦您在myVectorA
中使用多个点进行尝试,就会发现该错误
请阅读Why should I not #include <bits/stdc++.h>
?和Why is “using namespace std;” considered bad practice?
顺便说一句,任务不太可能将int
s 存储在vector<size_t>
中
@idclev463035818:它甚至不会编译,不需要超过 1 分 :-)
@Jarod42 哦,对了,我不想大声抱怨“你甚至没有测试你的代码”,因为我认为他们做了......以上是关于如何在 C++ 中返回从零开始的向量索引的主要内容,如果未能解决你的问题,请参考以下文章