C++ Primer第10章10.6的习题疑问,正在学习这本书帮忙看看
在习题10.32里提到:
重新实现文本查询程序,使用vector容器代替set对象来存储行号。注意,由于行以升序出现,因此只有在当前行号不是vector容器对象中的最后一个元素时,才能将新行号添加到vector中。
这个要求的背景是待查询单词在文段中出现的所有行号都要按顺序存入一维容器中。所在的课文里是使用set这个STL类型实现,因为set_object.insert函数可以在插入时自动排序。而vector和其唯一区别就是不能自动按某种顺序插入,必须自定义判断顺序与插入位置的代码。
因此,我的疑惑产生了:
注意的条件是“只有在当前行号不是vector容器对象中的最后一个元素时”,这里面包含两个意思,待插入行号在行号容器中已存在,且位置在vector容器的最末。一般自定义的判断顺序与插入位置的代码早就判断出待插入行号已在容器中,因此通常就绕开了插入操作。
拿不准原作者在这个习题上想要表达的意思,最多是担心会遗漏对set与vector两种STL库类型某些特性区别的理解。其实钻不钻这个并不影响对整个章节乃至整本书的理解,纯粹是好奇心驱使。