I'd like to get from a vector of collected Data (each has a time stamp) only the elements which are newer than a specified time. savedPublishedData
is a map where i look for the id. savedPublishedData.second
is thn a vector of Data (Custom Class), each Data is for one time stamp.
std::vector<PublisherData>&
DataModel::getSavedPublishedData(const unsigned int id, seconds newerThan)
{
auto dataIterator = savedPublishedData.find(id);
if (dataIterator == savedPublishedData.end()) {
return; //type?
}
auto timeNow = system_clock::now();
std::vector<PublisherData>& dataRawRef = dataIterator->second;
auto is_newer = [&timeNow, &newerThan](const PublisherData& pD) ->bool
{
return (pD.getTimeGenerated() + newerThan) > timeNow;
};
auto dataIsNewer = dataRawRef | std::views::filter(is_newer);
return dataIsNewer; //How to return the view?
}
My compiler can't determine the type of dataIsNewer
(), so I don't know how to return the found values properly.