c++ - vector : namespace std 的重载运算符 +

标签 c++ vector std

我正在尝试为 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/

相关文章:

c++ - 如何在 C 或 C++ 中从命令行读取多行输入?

c++ - C++ 中的某个地方是否有 `int` 的正常数学商数和余数?

c++ - 无法专门化函数模板 'unknown-type std::invoke(_Callable &&,_Types &&...) noexcept(<expr>)'

c++ - 添加 curl 库 C++

c# - 使用 Windows 生物识别框架或任何其他方法通过 .Net 访问指纹读取器

r - 按原样添加矢量作为 data.frame 元素

c++ - 从 vector 返回 bool&

vector - 如何过滤自定义结构的向量?

c - strtol、strtod 不安全吗?

c++ - 为什么要使用 std::forward?