reserve和resize

void test_vector4()
{
	vector<int> v1;
	//cout << v1.max_size() << endl;
	//v1.reserve(10);
	v1.resize(10);
	for (size_t i = 0; i < 10; i++)
	{
		v1[i] = i;
	}

	for (auto e : v1)
	{
		cout << e << " ";
	}
	cout << endl;


	
}

在上面这段代码中对比了reserve和resize两种情况下的输出,会发现当使用reserve时,会中中断运行,是走不通的,是因为reserve是访问有效数据,0-1才是有效数据,reserve是减少扩容的消耗,他是首先开好空间,但不会扩容,所以在[]检测判断以下情况时,就会发生错误:

此时,有两种解决办法:

第一种,将reserve改为resize,resize直接将空间开好,并且把size也提上来

void test_vector4()
{
	vector<int> v1;
	v1.resize(10);
	for (size_t i = 0; i < 10; i++)
	{
		v1[i] = i;
	}

	for (auto e : v1)
	{
		cout << e << " ";
	}
	cout << endl;
}

第二种:

void test_vector4()
{
	vector<int> v2;
	v2.reserve(10);
	for (size_t i = 0; i < 10; i++)
	{
		v2.push_back(i);
	}
	for (auto e : v2)
	{
		cout << e << " ";
	}
	cout << endl;
}

所以,正确使用就不会出现特别大的问题

相关推荐

  1. 【C++中resizereserve的区别】

    2024-07-21 20:44:02       19 阅读
  2. Pytorch中的resizereshape

    2024-07-21 20:44:02       49 阅读
  3. resizereverse修改容器大小

    2024-07-21 20:44:02       42 阅读
  4. GiB is reserved by PyTorch but unallocated

    2024-07-21 20:44:02       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 20:44:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 20:44:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 20:44:02       45 阅读
  4. Python语言-面向对象

    2024-07-21 20:44:02       55 阅读

热门阅读

  1. c++端的类,作为组件在qml端使用

    2024-07-21 20:44:02       14 阅读
  2. Python笔记(3)

    2024-07-21 20:44:02       14 阅读
  3. 生成表的DDL语句没有字段描述和表名描述

    2024-07-21 20:44:02       16 阅读
  4. bitset和set总结

    2024-07-21 20:44:02       12 阅读
  5. Flask校验

    2024-07-21 20:44:02       18 阅读
  6. 基带成型(脉冲成形)

    2024-07-21 20:44:02       19 阅读
  7. mysql索引篇

    2024-07-21 20:44:02       18 阅读
  8. FedAvg

    FedAvg

    2024-07-21 20:44:02      16 阅读
  9. 我在vue2重生之vite加强版

    2024-07-21 20:44:02       15 阅读