C++ Stl的Vector使用

       在项目中,vector使用很多很广,与其说vector使用很多不如说STL使用的很多。C++的STL库封装了常用的数据结构,它们里面又实现了一些非常实用的算法,使得STL被广泛使用,减低项目开发难度和周期。vector是线性容器,它的元素严格的按照线性序列排序,和动态数组很相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅可以使用迭代器(iterator)访问元素,还可以使用指针的偏移方式访问,和常规数组不一样的是,vector能够自动存储元素,可以自动增长或缩小存储空间。vector是真的很屌,可以装数据,可以装结构体,只要你能塞进去。

       在完成项目或者学习的时候还是需要用代码来理解,多调试多理解函数的用法和意义,这样进步才能更快。我就是用下面的代码来试验试验Vector:

<span style="font-size:10px;">#include "stdafx.h"
#include <vector>
#include <string>

#define COUNT 5

using namespace std;

typedef struct Message
{
	string protocol;
	int length;
}MSG;

void printVectorInt(vector<int>::iterator iter, vector<int> v_INT)
{
	printf("\n***************************************\n");
	// 用迭代器来循环出值出来
	for (iter = v_INT.begin(); iter < v_INT.end(); iter++)
	{
		printf("The v_INT value is = %d\n", *iter);
		/*// erase函数只能传递iterator指针
		if (*iter == 5)
		{
			v_INT.erase(iter);
		}*/
	}
	printf("***************************************\n");
}

int main()
{
	vector<int> v_INT;
	//迭代器,可以理解为指向数据的指针
	vector<int>::iterator iter;
	for (size_t i = 0; i < COUNT; i++)
	{
		v_INT.push_back(i);
	}
	// 通过循环的方式来获取Vector内的内容
	for (size_t i = 0; i < v_INT.size(); i++)
	{
		printf("The v_INT.at(%d) is = %d\n",i, v_INT.at(i));
	}
	printVectorInt(iter,v_INT);
	// assign(),用指定元素序列替换容器内所有元素
	v_INT.assign(1,10);
	printVectorInt(iter,v_INT);
	// 清空
	v_INT.clear();

	// 塞结构体进去
	vector<MSG> v_ST;
	MSG msg;
	msg.length   = 0x10AB;
	msg.protocol = "TCP";
	v_ST.push_back(msg);
	// 检查是不是空
	if (!v_ST.empty())
	{
		// 因为只装载了1个,所以直接就取0了
		string prot = v_ST.at(0).protocol;
		int len     = v_ST.at(0).length;
		printf("\n---------------------------------------\n");
		printf("The protocol is = %s\n",prot.c_str());
		printf("The length is = 0x%x", len);
		printf("\n---------------------------------------\n");
	}
	system("pause");
	return 0;
}</span>
下面是打印:



vector还有其他的很多函数,具体的用法可以根据项目的需要再查找和使用。

比如逆序啊,插入值啊,删除啊那些函数,可以自己多实现,多写多调试,这样印象才深刻。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值