std::vector
释放内存
- std::vector::clear()
Removes all elements from the vector (which are destroyed), leaving the container with a size of 0.
- 使用clear时,可能并未释放分配的内存空间
- 代码
std::vector<int> foo;
foo.push_back(1);
foo.push_back(2);
foo.push_back(3);
foo.push_back(4);
foo.push_back(5);
foo.size(); // 5
foo.capacity(); // 5
foo.clear()
foo.size(); // 0
foo.capacity(); // 5
- std::vector::swap
- 代码
std::vector<int> foo;
foo.push_back(1);
foo.push_back(2);
foo.push_back(3);
foo.push_back(4);
foo.push_back(5);
foo.size(); // 5
foo.capacity(); // 5
foo.swap(vector<int>());
// 或
vector<int>().swap(foo);
foo.size(); // 0
foo.capacity(); // 0
- std::vector::shrink_to_fit
- 代码
std::vector<int> foo;
foo.push_back(1);
foo.push_back(2);
foo.push_back(3);
foo.push_back(4);
foo.push_back(5);
foo.size(); // 5
foo.capacity(); // 5
foo.clear();
foo.shrink_to_fit();
foo.size(); // 0
foo.capacity(); // 0
拷贝容器
- std::vector::assign 复制一份数据,原容器数据不变
// 已经存在的容器
m_vv;
std::vecotor<xxx> m_vector;
m_vector.assign(m_vv.begin(), m_vv.end());
- std::vector::puch_back
std::vector<xxx> m_vector;
m_vector.push_back(xxx);
m_vector.puch_back(xxx);
- 初始化时进行构造
std::vetor<xxx> new_vector(old_vector);
- std::vector::swap 将old_vector数据全部移到new_vector,old_vector为空
std::vector<xxx>new_vector;
new_vector.swap(old_vector);
- std::vector::insert
将old_vector的数据,全部插入到new_vector的末尾,相当于复制了一份数据
vector<xxx> new_vector;
vector<xxx> old_vector;
new_vector.insert(new_vector.end(), old_vector.begin(), old_vector.end());
容器查找
- std::find
std::vector<int> m_v;
std::vector<int>::iterator it = std::find(m_v.begin(), m_v.end(), 10);
if (it != m_v.end()) {
// find
}
// 复杂类型如结构体 ,需要重载 == 运算符
struct student
{
string name;
int score;
student()
: name("")
, score(0)
{
}
bool operator==(const student& s)
{
return name== s.name;
}
}
student s1;
s1.name = 'linduo'
std::vecot<student>::iterator = std::find(m_v.begin(), m_v.end(), s1);
if (it != m_v.end()) {
// find
}