C++ std::vector 基本用法2

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	int ar[10] = { 1,2,3,4,5,6,7,8,9,0 };
	std::vector<int> vec5(ar, ar + 10);

	// reverse
	size_t cap1 = vec5.capacity();	// = 10
	vec5.reserve(20);				// = Request a change in capacity
	size_t cap2 = vec5.capacity();	// = 20

	// data()
	int * pInt = vec5.data();
	for (size_t i=0; i<vec5.size(); ++i)
	{
		cout << pInt[i];
	}
	cout << endl; // 1234567890

	// begin end
	for (auto it=vec5.begin(); it != vec5.end(); ++it)
	{
		cout << *it;
	}
	cout << endl; // 1234567890

	// cbegin cend 常量,保证不改变 vector 中的元素
	for (auto it = vec5.cbegin(); it != vec5.cend(); ++it)
	{
		cout << *it;
	}
	cout << endl; // 1234567890

	// rbegin rend 注意偏移是 ++ 操作
	for (auto it = vec5.rbegin(); it != vec5.rend(); ++it)
	{
		cout << *it;
	}
	cout << endl; // 0987654321

	// iterator erase (const_iterator position);
	vec5.erase(vec5.begin()); // delete 1; size = 9

	// iterator erase (const_iterator first, const_iterator last);
	vec5.erase(vec5.begin(), vec5.begin()+2); // delete 2, 3; size = 7

	// max_size; Returns the maximum number of elements that the vector can hold.
	// 系统或者库的设计上线。并非机器所能申请的最大大小。
	size_t maxSize = vec5.max_size();

	std::vector<int> vec6(2);
	vec5.swap(vec6);					// 两者交换
	//vec5.swap(std::vector<int>());	// 2015支持,2017不支持

}

  

原文地址:https://www.cnblogs.com/alexYuin/p/12032231.html

时间: 2024-10-12 20:01:26

C++ std::vector 基本用法2的相关文章

C++:vector的用法详解(转载)

原文地址:http://blog.csdn.net/hancunai0017/article/details/7032383 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1.文件包含: 首先在程序开头处加上#include<vector>以包含所需要的类文件vector 还有一定要加上using namespace std; 2.变量声明: 2.1 例:

c++中vector的用法详解

c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1.文件包含: 首先在程序开头处加上#include<vector>以包含所需要的类文件vector 还有一定要加上using namespace std; 2.变量声明: 2.1 例:声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个

std::string,std::vector,std::accumulate注意事项

在用string做字符串拼接时,会发现随着string的增大越来越慢,原因主要是string(和vector)是基于现行内存的数据结构,在海量数据时,经常会申请新的一块内存,把原有的数据拷贝过去然后再析构掉,这样非常浪费时间,使用reserve可以有效的改变这种情况 因为string(和vector)的reserve最大的用处是为了避免反复重新分配缓冲区内存而导致效率降低,或者在使用某些STL操作(例如std::copy)之前保证缓冲区够大.在面对大数据量时,应该先调用 reserve(size

vector数组用法及举例

vector详解 1.调用vector的头文件 注意:c++编程中填写这个头文件 2.vector的用法 注意:大概来讲,vector就是一个变长数组,与a[]这种普通数组不同的是,他不用定义多长,是根据用户的用法变化的,同时它的用法及方法也与普通数组不同 3.vector的存取方法及特殊 注意:vector的存取与栈相同(即一种无盖有底的“洞”,从顶端存入,从顶端取出): 3.vector数据的读取及其他方法 注意:iterator是一种迭代器,即一种读取器,其功能类似for循环:利用iter

STL中的Vector相关用法

STL中的Vector相关用法 标准库vector类型使用需要的头文件:#include <vector>. vector 是一个类模板,不是一种数据类型,vector<int>是一种数据类型. Vector的存储空间是连续的,list不是连续存储的. 1. 定义和初始化 vector< typeName > v1; //默认v1为空,故下面的赋值是错误的v1[0]=5;//v2是v1的一个副本,若v1.size()>v2.size()则赋值后v2.size()被

使用std::vector优化点云动画显示一例

1. 准备 使用std::vector应该知道几点: (1)内存连续的容器,有点像数组 (2)与std::list相比,插入和删除元素比较慢- 因为数据迁移 (3)添加元素可能会引发内存分配和数据迁移. 2. 问题 AnyCAD::API::PointCloudNode使用FloatList  及std::vector<float>来存储一些列的点[x0, y0, z0, x1, y1, z1, .....]: void  SetPoints (const FloatList &buf

error LNK2005: “public: class std::vector&lt;class std::vector&lt;class std::vector&lt;float&gt;”

VS2010:error LNK2005: "public: class std::vector<class std::vector<class std::vector<class std::vector<float,class std::allocator<float> >,class std::allocator<class std::vector<float,class std::allocator<float> 如: Re

C++ error C2440: “类型转换” : 无法从“std::vector::iterator”转换为“

原文地址:http://blog.csdn.net/onlyou930/article/details/5602654 圆环套圆环之迭代器 话说这一日是风平浪静,万里乌云,俺的心情好的没得说,收到命令清理A区(写部分代码,其中有在VC6下己完成的代码要移植到VC7下),一路上很轻松,用‘饭得标’的话来说就是‘卡卡’地!在快完成时出现错误. error C2440: “类型转换” : 无法从“std::vector<_Ty>::iterator”转换为“PPkgHead”with[_Ty=BYT

C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法

C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法. C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的替换. 1.std::vector::erase() 函数原型:iterator erase (iterator position); //删除指定元素 iterator erase (iterator first, iterator last); //删除指定范围内的元素 返回值:指向删除元素(或