Я хочу иметь функцию, которая выполняет итерацию по вектору, выбирает и выбирает элемент, который затем возвращает потребителю в виде указателя, т.е. указатель должен указывать на элемент в векторе.Пока что у меня есть:
#include <vector>
class data_t {
public:
data_t(){mydat=99;}
~data_t(){}
int get_dat(){return mydat;}
private:
int mydat;
};
void *myfunc(std::vector<data_t> foo);
int main(void) {
std::vector<data_t> container;
data_t tmp;
data_t *res=nullptr;
container.push_back(tmp);
container.push_back(tmp);
res = (data_t*)myfunc(container);
res->get_dat();
}
void *myfunc(std::vector<data_t> foo) {
for (auto itr = foo.begin(); itr != foo.end(); itr++) {
if (itr->get_dat())
return &*itr;
}
return nullptr;
}
, но я не уверен насчет return &*itr
- так как не кажется правильным сначала разыменовать итератор, а затем вернуть указатель на него.Кроме того, хотя itr
локально, оно указывает на глобально доступный векторный элемент.Как мне сделать это лучше?