在与一些遗留代码一起工作的项目中,我发现了这个函数:
std::vector<std::string> Object::getTypes(){
static std::string types [] = {"type1","type2", "type3"};
return std::vector<std::string> (types , types +2);
}
我可能会把它写成:
std::vector<std::string> Object::getTypes(){
std::vector<std::string> types;
types.push_back("type1");
types.push_back("type2");
types.push_back("type3");
return types;
}
这只是一种风格选择还是我忽略了什么?任何帮助都将不胜感激。如果这太基础了,对不起。
更新: 实际上找到了不同的类覆盖同一个方法的方式,因此更加模糊不清。我会使它们全部变成相同的,但如果有更好的方法,我更愿意采用更好的方法。
编辑
请注意,上述旧代码是不正确的,因为它仅使用数组的前两个元素进行初始化。然而,这个错误已经在评论中讨论过,因此应该保留。
正确的初始化应该如下所示:
...
return std::vector<std::string> (types, types + 3);
...
return std::vector<std::string>{"type1","type2", "type3"};
。 - juanchopanzastd::begin
和std::end
(当然你应该使用),就不会有这个问题。 - James Kanze