【发布时间】:2015-10-25 11:14:00
【问题描述】:
我一直在阅读,使用此代码不太好:
std::vector<T> my_vector;
...
std::sort(my_vector.begin(), my_vector.end());
最好写成:
std::vector<T> my_vector;
...
std::sort(std::begin(my_vector), std::end(my_vector));
因为 std::begin 将适用于所有容器,包括普通数组。
my_vector.size() 的替代品是什么,适用于所有容器,包括普通数组?
【问题讨论】:
-
您可以尝试滚动您自己的模板化
size()函数,并专门针对原始 c 样式数组。 -
std::size 但直到 C++ 17
-
您将在 C++17 中获得
std::size(my_vector)。目前没有。 -
YMMV,但我不再担心支持所有容器类型:您只需要四个容器:
vector<>、unordered_map<>、deque<>和unordered_set<>按此顺序排列。其中,只有vector<>是一般的主力,其他的只在特殊情况下有用。最重要的是,你永远不应该使用list<>或forward_list<>,在所有情况下都可以用vector<>替换,vector<>会明显更快。也就是说,超过 90% 的容器应该是vector<>,而特殊情况无论如何都是特殊的。
标签: c++ c++11 coding-style std