Въпрос за задача Register от Special Class Members-Exercise
Здравейте,
Задачата е Registers от C++ OOP лекцията за Special Class Members. Имам динамчния масив Company* companiesArray, който има размер size_t numAdded. Задачата ми е да итерирам през този масив и на база някакво условие да връщам информация за компанията намираща се на текущия индекс. Реших задачата със най обикновен for loop, но ми се искаше да я реша и със range based for loop. В stackoverflow намерих следното решение.
namespace std {
template <typename T> T* begin(std::pair<T*, T*> const& p) {
return p.first;
}
template <typename T> T* end(std::pair<T*, T*> const& p) {
return p.second;
}
}
for (auto&& company : std::make_pair(companiesArray, companiesArray+numAdded)) {
if (company.getId() == companyId) {
return company;
}
}
1. Не мога да разбера защо е необходимо да връщаме r-value reference при положение, че работи и с нормална референция. И въобще, какво точно се случва, когато връщаме r-value в този случай.
2. Изглежда ми много странно, че тук е решено да се добави (не съм сигурен дали реално се добавя нещо, но така изглежда) нещо към std namespace.
Ето линк към цялата задача https://github.com/viktornikolov069/Register/tree/main
Поздрави,
Виктор Николов