当前位置: 首页> 教育> 大学 > STL-vector

STL-vector

时间:2025/7/10 21:47:53来源:https://blog.csdn.net/2301_77479435/article/details/141959176 浏览次数:0次

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: