vector二维数组查找的问题

小镇1112 2014-08-17 09:42:23
定义vector< vector<unsigned char> > v;
每次获得unsigned char m[10]数组,在容器中查找,若找到不做处理,若没找到添加到容器中,除了一个元素一个元素的比对,怎么实现?或者更换定义方式也行,怎么实现起来更加方便快速,请求大牛指导!!
还有就是怎么不能vector<unsigned char*>这样定义,用find直接查找呢?每次push_back都会添加到容器第一个元素,就是直接覆盖了,容器最后也只保留了最后的一个元素。

...全文
162 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小镇1112 2014-08-18
  • 打赏
  • 举报
回复
多谢
passion_wu128 2014-08-17
  • 打赏
  • 举报
回复
可以将unsigned char[10]单独封装到一个结构啊,还可以再封装些有关的函数

#include <vector>
#include <algorithm>
using namespace std;

typedef unsigned char uchar;

typedef struct _MyDATA
{
	uchar _data[10];

	_MyDATA(uchar data[10])
	{
		memcpy(_data, data, 10);
	}

	bool operator==(const uchar data[])
	{
		return memcmp(_data, data, 10) == 0;
	}
}MYDATA;

typedef vector<MYDATA> MyCont;

int main(int argc, char* argv)
{
	MyCont cont;
	uchar data[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
	if(find(cont.begin(), cont.end(), data) != cont.end())
	{
		cont.push_back(data);
	}
}
神奕 2014-08-17
  • 打赏
  • 举报
回复
可以定义vector<string>类型的容器,然后使用string的compare()成员函数进行比较:

#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main()
{
	vector<string> v;
	string str;
	while(cin >> str)  // 输入字符串
	{
		int flag = 1;
		vector<string>::iterator beg = v.begin();
		for(;beg!=v.end(); ++beg)
		{
			if((*beg).compare(str) == 0)  // 比较字符串,相等返回0
			{
				flag = 0;
				break;
			}
		}
		if(flag == 1)
		{
			v.push_back(str);
		}
	}
	
	// 输出
	vector<string>::iterator beg = v.begin();
	for(;beg!=v.end(); ++beg)
		cout << *beg << " ";
	cout << endl;
	return 0;
}

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧