小编Luk*_*ndt的帖子

为什么不为std :: vector重载operator + =()?

我已经开始学习C++了,所以我不知道在缺乏知识/经验的情况下为什么对于新手来说看似简单的东西,因为我将要描述的内容尚未出现在STL中.要将矢量添加到另一个矢量,您必须输入以下内容:

v1.insert(v1.end(), v2.begin(), v2.end());
Run Code Online (Sandbox Code Playgroud)

我想知道在现实世界中人们是否只是重载+ =运算符以使其更简洁,例如对于

template <typename T>
void operator+=(std::vector<T> &v1, const std::vector<T> &v2) {
    v1.insert(v1.end(), v2.begin(), v2.end());
}
Run Code Online (Sandbox Code Playgroud)

那么你可以

v1 += v2;
Run Code Online (Sandbox Code Playgroud)

我也把这个设置为push_back到"+ ="一个元素到最后.是否有某些原因这些事情不应该由熟练使用C++的人完成或特别避免?

c++ stl vector operator-overloading

23
推荐指数
3
解决办法
9999
查看次数

更改向量<string>中字符串的大小

当一个或多个元素改变大小时,矢量会发生什么?

详细说明,

#include <string>
#include <vector>
using namespace std;
int main() {
    vector<string> v;
    v.push_back("first string");
    v.push_back("2nd string");
    v[0] += " has increased in size";
}
Run Code Online (Sandbox Code Playgroud)

在"v [0] + = ......"会发生什么?是否会进行大规模重新分配,以保持字符串和向量中的内存连续?

c++ stl

2
推荐指数
2
解决办法
200
查看次数

标签 统计

c++ ×2

stl ×2

operator-overloading ×1

vector ×1