来源:http://c.biancheng.net/view/6826.html
#include <iostream>
#include <vector>
//c.biancheng.net/ref/sin.html)g namespace std;
int main()
{
vector<int> values{};
values.push_back(1);
values.push_back(2);
for (int i = 0; i < values.size(); i++) {
cout << values[i] << " ";
}
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> values{};
values.emplace_back(1);
values.emplace_back(2);
for (int i = 0; i < values.size(); i++) {
cout << values[i] << " ";
}
return 0;
}
emplace_back和push_back都有往容器后面插入一个元素的作用
不同的是
emplace_back() 和 push_back() 的区别,就在于底层实现的机制不同。push_back() 向容器尾部添加元素时,首先会创建这个元素,然后再将这个元素拷贝或者移动到容器中(如果是拷贝的话,事后会自行销毁先前创建的这个元素);而 emplace_back() 在实现时,则是直接在容器尾部创建这个元素,省去了拷贝或移动元素的过程
emplace_back()的用法 可以直接输入相应的构造函数
在leetcode1002中
vector<string> commonChars(vector<string>& A) {
vector<string> res;
vector<int> freq(26,0);
vector<int> minFreq(26,INT_MAX);
for(int i = 0; i < A.size();i++){
fill(freq.begin(), freq.end(),0);
for(int j = 0; j < A[i].size();j++){
freq[A[i][j] - 'a']++;
}
for(int i = 0; i < minFreq.size();i++){
minFreq[i] = min(minFreq[i],freq[i]);
}
}
for(int i = 0; i < minFreq.size();i++){
for(int j = 0; j < minFreq[i];j++){
res.emplace_back(1,i + 'a');
//这里调用了string的构造函数
}
}
return res;
}