我开始学习C++,因为我缺乏知识和经验,所以不明白为什么对于新手来说似乎如此简单的一件事情,如下述内容,不已经在STL中了。要将一个向量添加到另一个向量,您必须键入以下内容:
v1.insert(v1.end(), v2.begin(), v2.end());
我想知道在现实世界中,人们是否会重载+=运算符以使代码更加简洁,例如像这样的效果:template <typename T>
void operator+=(std::vector<T> &v1, const std::vector<T> &v2) {
v1.insert(v1.end(), v2.begin(), v2.end());
}
那么你可以这样做
v1 += v2;
我也将push_back设置为使用"+="将单个元素添加到末尾。 有没有一些原因不应该这样做或者在C++熟练的人中特别避免这些事情?
insert
已经实现的。此外,向量相加有两种可能的含义 - 像你在这里做的拼接,或者像valarray
一样进行逐对相加,需要操作数大小相等。因此,这不是重载运算符的理想选择。 - Steve Jessopv[i] += v[i]
。 - dmckee --- ex-moderator kittenoperator+=()
视为成对加法的一个原因是向量的目的是包含元素。对元素进行操作超出了向量的设计/责任范围。基于这一点,根据最小特权原则,应该假定operator+=()
是向量插入。 - Lukasz Wiklendt