【发布时间】:2016-06-01 18:18:21
【问题描述】:
编译器优化这段代码是否合法且有可能:
std::vector<T> my_vec(10);
//some code
my_vec.erase(my_vec.begin()+5,my_vec.end());
进入:
std::vector<T> my_vec(10);
//some code
my_vec.resize(5);
我之所以问,是因为我总是读到 std::vector::resize 从末尾擦除时比 std::vector::erase 更可取。但是,我发现std::vector::erase 更具可读性。
【问题讨论】:
-
您认为哪里更可取,理由是什么?
-
我在一些 SO 答案中看到它作为旁注。我不记得原因是什么,或者是否提到了原因。也许我应该先问一下它是否真的更好:)
-
@HumamHelfawi:不,为什么你认为
erase看起来更好? -
这两个调用几乎肯定会做同样的事情 - 所以你喜欢哪个就是你喜欢的那个。
-
@Barry 不,事实并非如此。
标签: c++ c++11 vector compiler-optimization