vector与结构体结合的简单应用

原创 2016年05月30日 15:01:23

vector是STL中很重要的一个容器。简单地说,vector是数组的一种类表示,它提供了自动内存管理功能,可以动态地改变vector对象的长度,并随着元素的添加和删除而增大和减小。它提供了对元素的随机访问。在尾部添加和删除元素的时间是固定的,但在头部或中间插入和删除元素的时间复杂度为线性的。

在使用时需要添加头文件<vector>,为方便使用通常有 using namespace std;语句。

vector的功能很多,其相关的成员函数基本可以实现所有常用功能,再次不一一举例。除此之外,值得注意的有两点:(1)同一般的STL容器,vector也可使用迭代器来访问(遍历)其中的元素,并且很方便;(2)vector是可反转容器,可使用rbegin()和rend()来逆向遍历容器。

ps:vector 模板类是最简单的序列类型,除非其他类型的特点优点能够更好地满足程序的要求,否则应默认使用这种类型。


以下程序功能为使用vector容器存放结构体类型,并查找其中一些属性的最小值。

#include <iostream>
#include <vector>

using namespace std;

struct Elem
{
	long img_ind;
	double value;
	double dvalue;
	
	Elem()
	{
		img_ind = 0;
		value = 0;
		dvalue = 0;
	}

	Elem(long _ind, double _value, double _dvalue )
	{
		img_ind = _ind;
		value = _value;
		dvalue = _dvalue
	}
};

int main()
{
	vector<Elem*> trial;
	int i,a;
	long ind[10];
	double phi[10],dphi[10];
<span style="white-space:pre">	</span>//赋初值
	for(i=0; i < 10; i++)
	{
		ind[i] = i;
		phi[i] = 50+i;
		dphi[i] = 20-i;
		Elem * elem = new Elem(ind[i], phi[i], dphi[i]);
		trial.push_back(elem);
		//printf("ind = %ld, value = %f, dvalue = %f \n", trial[i]->img_ind, trial[i]->value, trial[i]->dvalue);
	}
	double min_phi,min_dphi;
	vector<Elem*>::iterator iter = trial.begin();
	for ( ; iter != trial.end(); iter++)
	cout << "ind = " << (*iter)->img_ind << "  phi = " << (*iter)->value << "  dphi = " << (*iter)->dvalue << endl ;
<span style="white-space:pre">	</span>//寻找最值
	min_phi = trial[0]->value;
	min_dphi = trial[0]->dvalue;
	for(i=1; i<trial.size();i++)
	{
		if(min_phi > trial[i]->value) min_phi = trial[i]->value;
		if(min_dphi > trial[i]->dvalue) min_dphi = trial[i]->dvalue;
	}
	//min_phi = *min_element(iter.begin(),iter.end()) 结构体中使用min_element似乎不可行;
	cout << "min_phi = " << min_phi << endl << "min_dph = " << min_dphi;

	return 0;
}
其中值得注意的是vector<Elem*> xx为指针,迭代器也为指针,因此要注意*的使用。

vector容器中存放结构体类型的变量

如果要在Vector容器中存放结构体类型的变量,经常见到两种存放方式. 方式一:放入这个结构体类型变量的副本。 方式二:放入指向这个结构体类型变量的指针。 假设结构体类型变量是这样的, t...

vector容器中存放结构体类型的变量

如果要在Vector容器中存放结构体类型的变量,经常见到两种存放方式. 方式一:放入这个结构体类型变量的副本。 方式二:放入指向这个结构体类型变量的指针。 假设结构体类型变量是这样的, t...

从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级。本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能...

从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级。本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能...

学生成绩简单统计-结构体的应用-浙大第三周作业

1(10分)学生成绩简单统计。 写一个程序,读入10名学生的成绩。每个学生的数据,包含一个不带空格的名字(不超过19个字符),以及三门课的成绩,每门课的成绩是1到5的整数。程序要输出如下的一个列表,...

基于结构体的混合类型简单应用

本程序主要是基于结构体的混合类型简单应用: 结构体定义,结构成员访问。 其中,结构成员的访问设计,结构指针,结构数组,指针数组,结构指针的指针等多种方式访问结构成员。 具体实现,如下代码所示以及个人的...

HDU4584结构体的简单应用

原题http://acm.hdu.edu.cn/showproblem.php?pid=4584#include #include #include #include #include #i...
  • ZCR_7
  • ZCR_7
  • 2014年07月07日 09:01
  • 395

vector的使用,结构体排序

在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。 1 基本操作 (1)头文件#include. (2)创建vector对象,vector vec; (3...

C++中,结构体vector使用sort排序

一、遇到问题: 今天写代码的是遇到想对vector进行排序的问题,隐约记得std::sort函数是可以对vector进行排序的,但是这次需要排序的vector中压的是自己定义的结构体(元素大于等于2)...

vector 查找/查找和对比结构体元素值

原地转:http://www.cplusplus.com/reference/algorithm/find_if/ #include #include #include #include...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vector与结构体结合的简单应用
举报原因:
原因补充:

(最多只允许输入30个字)