容器前后行为
Container front and back behavior
引用自"Effective STL":
When you get an object from a container (via. e.g., front or back), what you set is a copy of what was
contained. Copy in, copy out. That's the STL way.
我很难理解这部分。据我所知,前面 returns 是第一个元素的引用(至少 std::vector
是这样)。
你能解释一下上面的句子吗?
这样的语句的想法是,当您想从容器中取出一个元素时,您不会在容器中保留对元素的引用或指针,你创建了它的一个副本(来自参考那些方法return)。 函数 returns,对于 back()
和 front()
,是次要问题,可能会混淆问题 - 甚至勘误表也删除了对它们的提及。
容器可以进行重新分配(尤其是 vector
),您不一定会收到容器的通知,元素在内存中移动,突然您有一个无效的引用或指针。
记住建议的时间,在移动语义和可移动对象等之前。但一般原则仍然适用,不要保留对可能无效的对象的引用或指针。
"Value semantics"是一个强烈的主题,不仅贯穿于标准库,也贯穿于整个C++。
这实际上是本书早期版本中的一个错误。来自 errata:
! 6/29/01 jk 20 The first para of Item 3 is incorrect: front 7/25/04
and back do NOT return copies of elements, they
return references to elements. I
removed all mention of front and back.
所以这句话的解释是:呜呜呜,是时候出新版了!
引用自"Effective STL":
When you get an object from a container (via. e.g., front or back), what you set is a copy of what was contained. Copy in, copy out. That's the STL way.
我很难理解这部分。据我所知,前面 returns 是第一个元素的引用(至少 std::vector
是这样)。
你能解释一下上面的句子吗?
这样的语句的想法是,当您想从容器中取出一个元素时,您不会在容器中保留对元素的引用或指针,你创建了它的一个副本(来自参考那些方法return)。 函数 returns,对于 back()
和 front()
,是次要问题,可能会混淆问题 - 甚至勘误表也删除了对它们的提及。
容器可以进行重新分配(尤其是 vector
),您不一定会收到容器的通知,元素在内存中移动,突然您有一个无效的引用或指针。
记住建议的时间,在移动语义和可移动对象等之前。但一般原则仍然适用,不要保留对可能无效的对象的引用或指针。
"Value semantics"是一个强烈的主题,不仅贯穿于标准库,也贯穿于整个C++。
这实际上是本书早期版本中的一个错误。来自 errata:
! 6/29/01 jk 20 The first para of Item 3 is incorrect: front 7/25/04
and back do NOT return copies of elements, they
return references to elements. I
removed all mention of front and back.
所以这句话的解释是:呜呜呜,是时候出新版了!