gpt4 book ai didi

c++ - 返回指向 std::vector 中对象的指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:45 24 4
gpt4 key购买 nike

我有一个关于返回对 vector 元素的引用的非常基本的问题。

有一个 vector vec 存储类 Foo 的实例。我想从此 vector 访问一个元素。 (不想使用 vector 索引)。我应该如何在此处对方法 getFoo 进行编码?

#include<vector>
#include<stdio.h>
#include<iostream>
#include<math.h>

using namespace std;
class Foo {
public:
Foo(){};
~Foo(){};
};


class B {
public:
vector<Foo> vec;
Foo* getFoo();
B(){};
~B(){};
};


Foo* B::getFoo(){
int i;
vec.push_back(Foo());
i = vec.size() - 1;

// how to return a pointer to vec[i] ??

return vec.at(i);

};

int main(){
B b;
b = B();
int i = 0;
for (i = 0; i < 5; i ++){
b.getFoo();
}

return 0;
}

最佳答案

既然可以返回引用,为什么还要使用指针?

Foo& B::getFoo() {
vec.push_back(Foo());
return vec.back();
}

请注意,如果发生重新分配,指向vector内容的引用、指针和迭代器将失效。

同时公开成员数据(例如此处的 vec)并不是一个好的做法 - 最好根据需要为您的类提供访问方法。

关于c++ - 返回指向 std::vector 中对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2711170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com