我已经开始学习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++的人完成或特别避免?
当一个或多个元素改变大小时,矢量会发生什么?
详细说明,
#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] + = ......"会发生什么?是否会进行大规模重新分配,以保持字符串和向量中的内存连续?