【发布时间】:2017-09-01 06:13:56
【问题描述】:
在 3D 几何引擎代码中,我读到:
std::vector<GA_Offset*> 似乎是错误的,GA_Offset 只是一个 64 位的 integer。
std::vector<GA_Offset> 会更好。
其中GA_Offset aka long int 可能是几何结构中元素的非连续偏移。 GA_Offsets 即使在它之前的元素被删除时也保持不变,但如果在它之前插入一个元素,或者如果元素列表被碎片整理,则会失效。
在我短暂的 C++ 经验中,我了解到引用和指针比传递值更好。现在我有点困惑了。
为什么在std::vector 中存储值比指针更好? 64 位 int 有何不同?
【问题讨论】:
-
“在我短暂的 C++ 经验中,我了解到引用和指针比传递值更好。” - 恐怕你学错了。
-
@RichardHodges:传递引用通常比传递值好。
-
@BoundaryImposition 自 std::move 和复制省略出现以来,按值传递通常比按引用传递更好(更有效)。当然,如果被调用者要获得数据的所有权。
-
@RichardHodges:关键在于后半部分。我的大部分功能都没有所有权。我敢打赌,大多数其他人的功能也是如此。无论哪种方式,我们都不能就该主题做出广泛的声明,因为(像往常一样)这取决于!
-
看起来你将不得不忘记一两件事。
标签: c++ c++11 pointers vector stl