#include <cstdint>
#include <utility>
class SimpleMap {
public:
typedef std::pair<const uint32_t, const uint32_t> value_type;
static const int SIZE = 8;
uint64_t data_[SIZE];
SimpleMap() { data_ = {0}; }
// Returning a reference to the contained data.
uint64_t const& GetRawData(size_t index) {
return data_[index];
}
// Would like to return a pair reference to modified data, but how?
// The following wont work: returning reference to temporary
value_type const& GetData(size_t index) {
return value_type(data_[index] >> 32, data_[index] & 0xffffffff);
}
};
Контейнеры, такие как map
, имеют итераторы, которые возвращают ссылку на пару. Но как это вообще работает? Если я пишу итератор в контейнер, мне нужно вернуть ссылки на значения. Но как мне это сделать, если значения в парах? А что, если мне нужно немного изменить данные при создании этой пары, как в примере выше?
Надеюсь, мой вопрос не слишком запутан. Пожалуйста, помогите!