我想使用town->name
而不是town->first
。内联命名访问器(重命名映射迭代器的第一和第二项以及 命名std::pair成员)是我目前找到的最佳解决方案。 我对命名访问器的问题在于类型安全丢失:pair<int,double>
可能指代struct { int index; double value; }
或者struct { int population; double avg_temp; }
。 是否有人能提出一个简单的方法,也许类似于traits?
我经常想从函数返回一对或元组,每次都引入一个新类型(如struct city { string name; int zipcode; }
及其构造函数)很烦人。 我很高兴了解到boost和C++0x,但我需要一个纯C++03解决方案,没有boost。
更新
回答andrewdski的问题:是的,语法类似于pair<int=index, double=value>
(将创建与pair<int=population, double=avg_temp>
不同的类型)将满足您的要求。我甚至不介意只需一次实现自定义pair/tuple模板类,然后在需要新类型时适当传递“名称traits”模板参数。 我不知道这个“名称traits”会是什么样子。也许这是不可能的。
pair<int=index, double=value>
,它将创建一个与pair<int=population, double=avg_temp>
不同的类型,这符合您的要求吗? - andrewdski