当前位置:   article > 正文

C++查找Vector中结构体中的数据中的内容find()_c++ vector 存模板类,如何find元素

c++ vector 存模板类,如何find元素

自定义的结构体

typedef struct CollectionLevel_s
{
	int collectionPos;
	int level;
}CollectionLevel_t;

typedef struct CollectionLevelCount_s
{
	CollectionLevel_t CollectionLevel;
	int count;

	bool operator == (const CollectionLevel_t& e) {
		return (this->CollectionLevel.collectionPos == e.collectionPos) && (this->CollectionLevel.level == e.level);
	}

	bool operator == (const int& pos) {
		return (this->CollectionLevel.collectionPos == pos);
	}

}CollectionLevelCount_t;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

使用函数查找

使用函数查找的时候,必须重载操作符才可以。

查找容器中的CollectionLevelCount_s中的CollectionLevel数据是否相等。

需要重载操作符

bool operator == (const CollectionLevel_t& e) {
		return (this->CollectionLevel.collectionPos == e.collectionPos) && (this->CollectionLevel.level == e.level);
	}

  • 1
  • 2
  • 3
  • 4
CollectionLevelCount_t data;
data.count=0;
data.CollectionLevel.collectionPos=10;
data.CollectionLevel.level=1;
std::vector<CollectionLevelCount_t>ve_collectionLevelCount;
auto tmp = find(ve_collectionLevelCount.begin(), ve_collectionLevelCount.end(),data);
if (tmp == ve_collectionLevelCount.end())
{
//没有找到数据
}
else
{
//找到了数据
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

查找容器中的CollectionLevelCount_s中的CollectionLevel数据中的collectionPos数据是否相等。

需要重载操作符

	bool operator == (const int& pos) {
		return (this->CollectionLevel.collectionPos == pos);
	}
  • 1
  • 2
  • 3

例子:

//自己准备数据
auto tmp = find(ve_collectionLevelCount.begin(), ve_collectionLevelCount.end(), elem1.collectionPos);
 if (tmp == ve_collectionLevelCount.end())
{
//查找到对应的collectionPos对应相等的数据了
}
else
{
//没有找到数据
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/390867
推荐阅读
相关标签
  

闽ICP备14008679号