1 Star 0 Fork 0

俺叫熊二/C++ code

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
test.cpp 3.13 KB
一键复制 编辑 原始数据 按行查看 历史
#include<iostream>
#include<vector>
using namespace std;
#include<string>
void test_vector1()
{
vector<int> v1;
vector<int> v2(10, 0); //开辟10个整型的空间,并将每个空间初始化为0
for (auto i : v2)
{
cout << i << " ";
}
cout << endl;
string s("hello world");
vector<int> v3(s.begin(), s.end()); //用迭代器区间来初始化v3
vector<int>::iterator it = v3.begin();
while (it != v3.end())
{
cout << *it << " ";
++it;
}
cout << endl;
}
void test_vector2()
{
vector<int> v;
size_t sz = v.capacity();
cout << "mark v grow:" << endl;
for (int i = 0; i < 100; i++)
{
v.push_back(i);
if (sz != v.capacity())
{
sz = v.capacity();
cout << "capcaity changed:" << sz << endl;
}
}
//大概是1.5倍扩容
}
void test_vector3()
{
vector<int> v;
//v.reserve(100); //仅仅只是将capacity开辟为100,但是size还是为0
v.resize(100); //size变为100,capacity也开辟为100(或100以上)
for (size_t i = 0; i < 100; i++)
{
v[i] = i;
}
//注意:上面如果是用reserve来扩容,虽然有容量,但是不能通过v[i]这种形式给数组赋值
//因为[]重载里面有assert断言size不能为0,所以即使开辟了空间,也是不能通过[]去给数组赋值的
for (auto e : v)
{
cout << e << " ";
}
cout << endl;
}
void test_vector4()
{
vector<int> v;
//max_size()的作用是返回容器在理论上或实现上能容纳的最大元素数量
cout << v.max_size() << endl;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
cout << v.size() << endl;
cout << v.capacity() << endl;
cout << "-------------------------" << endl;
//reserve会将capacity扩容为跟所给参数一样大,但是不会改变size
//注意;如果所给参数小于当前的size时,capacity会改变成跟size一样大
v.reserve(100);
cout << v.size() << endl;
cout << v.capacity() << endl;
cout << "-------------------------" << endl;
//将size调整为跟所给参数一样大,但是不改变空间容量capacity
v.resize(3);
cout << v.size() << endl;
cout << v.capacity() << endl;
cout << "-------------------------" << endl;
//当容器元素数量size远小于其预分配容量capacity时,
//调用shrink_to_fit()会尝试将capacity降低至与size相等,释放多余的内存空间‌
v.shrink_to_fit();
cout << v.size() << endl;
cout << v.capacity() << endl;
}
void test_vector5()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.insert(v.begin(), 0);
for (auto e : v)
{
cout << e << " ";
}
cout << endl;
auto it1 = find(v.begin(), v.end(), 3);
if (it1 != v.end())
{
v.insert(it1, 30); //注意:it1这个迭代器在insert使用以后会失效
}
for (auto e : v)
{
cout << e << " ";
}
cout << endl;
auto it2 = find(v.begin(), v.end(), 3);
if (it2 != v.end())
{
v.erase(it2); //注意:it2这个迭代器在erase后会失效
}
for (auto e : v)
{
cout << e << " ";
}
cout << endl;
cout << v.size() << endl;
cout << v.capacity() << endl;
v.clear(); //clear是用来清理掉有效数据的,但是不会释放空间capacity
cout << v.size() << endl;
cout << v.capacity() << endl;
}
int main()
{
test_vector1();
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/my-name-is-xiong-er/cs-learning-record.git
git@gitee.com:my-name-is-xiong-er/cs-learning-record.git
my-name-is-xiong-er
cs-learning-record
C++ code
master

搜索帮助