我正在尝试为 std::vector 重载运算符 + 和 +=,我所做的是
namespace std {
template<class T>
vector<T> operator+(vector<T> x, vector<T> y) {
vector<T> result;
result.reserve(x.size());
for (size_t i = 0; i < x.size(); i++)
result[i] = x[i] + y[i];
return result;
}
}
但我认为这是不好的做法,因为 clang-tidy 警告我“修改 std 命名空间会导致未定义的行为”。在 STL 类的重载运算符方面是否有其他更好的做法?
最佳答案
最好不要这样做。
但是如果你真的想要,你仍然可以:只是不要把它放在命名空间 std
中。
并且不要按值接受你的论点,除非你故意这样做是为了充分利用移动语义(你不是)。
关于c++ - vector : namespace std 的重载运算符 +,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52103950/