首页 > 解决方案 > 什么是选择器和变异器?

问题描述

本文中,这个人正在编写一个与 STL 兼容的前缀树。

然后我们有选择器和修改器。

/* Selectors */
    const_iterator find(const key_type& key) const;
    size_type size() const;
    size_type max_size() const;
    bool empty() const;
    reference at(const key_type& key);
    const_reference at(const key_type& key) const;

/* Mutators */
    iterator find(const key_type& key);
    std::pair<iterator, bool> insert(const key_type& key, const mapped_type& value);
    std::pair<iterator, bool> insert(const value_type& value);
    iterator insert(const_iterator hint, const value_type& value);
    reference operator[] (const key_type& key);
    void erase(const key_type& key);
    iterator erase(iterator pos);
    void clear();

我首先认为它们类似于settersand getters。获取存储在容器内部或容器周围的selectors一些数据,并mutators改变容器的状态。不过好像有点不一样。例如,有一个调用选择器函数at,它返回一个非常量引用类型(我认为这样可以更改容器的内容)。Selectors和的定义是Mutators什么?

标签: c++

解决方案


这些只是代码作者选择的名称,而不是具有正式定义的术语。从上下文中可以清楚地看出,他们将任何修改容器的东西称为“Mutators”,而将允许从容器中获取元素或获取容器信息的任何东西称为“选择器”。虽然,它们不太一致,因为find不会改变容器,我宁愿将它列在“选择器”下。

调用 at 的选择器函数返回非常量引用类型

原因可能是引用允许调用者修改容器中的元素,而不是容器本身。


推荐阅读