微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C ++将索引绑定到一个数据结构

如何解决C ++将索引绑定到一个数据结构

| 假设我有两个容器元素:
std::vector<std::string> foo = { \"aa\",\"bb\",\"cc\" };
std::vector<std::string> bar = { \"dd\",\"ee\" };
在这两个容器上运行的许多类之间,我将in传递为
foo
bar
。但是,我发现我必须非常小心,不要混淆哪些决定与哪个容器相关联,并且有时会失败,从而在找到导致结果的逻辑错误时遇到很多麻烦。 因此,假设我有两个方面:
int id_foo = 1;
int id_bar = 0;
有没有一种简单的设计模式,可以防止我尝试通过将“ 5”到“ 1”绑定“ 4”来调用“ 4”。 基本上,我试图找出最简单的方法来区分ѭ1和ѭ2。我可以为每个类创建单独的类,然后仅将迭代器定义到这些类中。但是,我想避免为每个容器(如
foo
bar
)创建一个单独的类,以使其具有此“安全性”。 问题是要求类似“索引安全”(类似于类型安全)的内容。我当前完成此操作的方式是通过以某种方式命名我的索引来指示它们与哪个容器相关联。     

解决方法

        确实没有用于区分索引索引的设计模式。有一些约定。 您可以使用typedef区分它们。也就是说,将
int
定义为
FooIndex
,类似地将
BarIndex
键入。您还可以对名称使用一些匈牙利符号(我知道人们对此表示讨厌,但是这种事情确实是它的初衷)。您似乎已经在使用其中的一些功能,但没有以有用的方式使用它。考虑以下命名约定:
int fooCurrentKey = 1;
int barCurrentKey = 0;
这使您知道第一个索引用于列表
foo
,第二个索引用于列表
bar
。     ,        无需设置其他类,只需使用迭代器而不是索引。它将转到适当的元素,因为它已经知道要查找的容器(如有必要)。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。