c++ - 什么是选择器和变异器?
问题描述
在本文中,这个人正在编写一个与 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();
我首先认为它们类似于setters
and getters
。获取存储在容器内部或容器周围的selectors
一些数据,并mutators
改变容器的状态。不过好像有点不一样。例如,有一个调用选择器函数at
,它返回一个非常量引用类型(我认为这样可以更改容器的内容)。Selectors
和的定义是Mutators
什么?
解决方案
这些只是代码作者选择的名称,而不是具有正式定义的术语。从上下文中可以清楚地看出,他们将任何修改容器的东西称为“Mutators”,而将允许从容器中获取元素或获取容器信息的任何东西称为“选择器”。虽然,它们不太一致,因为find
不会改变容器,我宁愿将它列在“选择器”下。
调用 at 的选择器函数返回非常量引用类型
原因可能是引用允许调用者修改容器中的元素,而不是容器本身。
推荐阅读
- python - 如何在图表的不同部分多次添加相同的节点
- c# - 从 sql 到 linq 的数据透视表
- javascript - 在会话之间在浏览器中存储超过 100 MB 的客户端
- python - 将 csv 文件中列的字符串值转换为 int 或 float 值以在 Python 中创建 Kmeans 聚类算法
- android - 如果滑动速度足够快,则不会调用 MotionLayout.TransitionListener
- wordpress - ACF - 在页面模板中显示分类术语图像字段
- google-cloud-platform - 调用 GCP API 状态时没有响应
- html - Instagram 图片未显示在标签中
- asp.net-mvc - PayPalCheckoutSDK CapturesRefundRequest 因不支持的媒体类型 (415) 错误而失败
- java - 对于我们发送数据包(而不是请求)的消息队列,是否应该避免合同测试?