本文主要是介绍STL-vector,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
string中拷贝构造的现代写法
string(const string& s):_str(nullptr)
{string tmp(s);swap(_str,tmp._str);
}
//s1=s3
string& operator=(string s)
{swap(_str,s._str);return *this;
}
s(由s3调拷贝构造而来)是一个临时对象出了作用域要调析构函数。
//string s2(s1)
string(const string& s):_str(nullptr),_size(0),_capacity(0){string tmp(s);this->swap(tmp);
}
void swap(string& s)
{::swap(_str, s._str);::swap(_size, s._size);::swap(_capacity, s._capacity);
}
实用的初始化方案
vector<int> v={ 0,1,2 };
for (auto e : v)cout << e << endl;
vector<vector<int>> v{ {0,1,2},{3,4,5} };
cout << v[1][1];
vector中的迭代器
vector<int> v = { 0,1,2 };
vector<int> ::iterator vit = v.begin();
while (vit != v.end())
{cout << *vit << " ";vit++;
}
vector的增容可能是二倍也可能是1.5倍,各有利弊。
resize是开空间+初始化而reserve只有开空间。
136. 只出现一次的数字
class Solution {
public:int singleNumber(vector<int>& nums) {int value=0;for(auto& e:nums)value^=e;return value;}
};
137. 只出现一次的数字 II
class Solution {
public:int singleNumber(vector<int>& nums) {int bitarr[32];for(auto e:nums){for(int i=0;i<32;i++){if(e&(1<<i))bitarr[i]++;}}int ret=0;for(int i=0;i<32;i++){if(bitarr[i]%3==1) ret+=(1<<i);}return ret;}
};
这篇关于STL-vector的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!