VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 938|回复: 7

vector容器的应用

[复制链接]
84_avatar_middle
最佳答案
0 
在线会员 发表于 2015-8-19 21:11:07 | 显示全部楼层 |阅读模式
3驿站币
我现在想检查某个数据是否已经存在于vector的容器中,如果存在,返回真,如果不存在,返回假;怎样实现??
我想用unique函数,感觉好像不行!
求大神指导??





上一篇:想做个爆破软件有思路不知道怎么实现
下一篇:网络抓包的思路
78_avatar_middle
最佳答案
0 
online_supermod 发表于 2015-8-19 21:45:00 | 显示全部楼层
vector没有查找功能,可以自己写个函数遍历vector,然后比较是否相等。
51_avatar_middle
最佳答案
83 
online_admins 发表于 2015-8-19 22:20:56 | 显示全部楼层
楼上正解了,vector 就是个动态数组,如果要查找的话,必须去遍历了。。。
51_avatar_middle
最佳答案
83 
online_admins 发表于 2015-8-19 22:21:03 | 显示全部楼层
楼上正解了,vector 就是个动态数组,如果要查找的话,必须去遍历了。。。
43_avatar_middle
最佳答案
0 
在线会员 发表于 2015-8-20 13:59:54 | 显示全部楼层
自己重载 你的数据结构的 == 操作,用
std::find()来查找即可,返回vector的迭代器,如果为end则没有,否则就有。
00_avatar_middle
最佳答案
0 
online_vip 发表于 2015-8-20 19:12:48 | 显示全部楼层
以下代码我学习IOCP vector遍历 忘能帮到你

//删除客户端
        void __stdcall RemoveStaleClient(PER_CONTEXT* pContext)
        {
                EnterCriticalSection(&m_cs);
                std::vector<PER_CONTEXT*>::iterator it  = m_ClientList.begin();
                while(it != m_ClientList.end())
                {
                        PER_CONTEXT* p_obj = *it;
                        if(pContext == p_obj)
                        {
                        //        m_pNotifyProc(pContext->m_Socket,Close,NULL,NULL);
                                //printf("删除客户端:%d~\n",p_obj);
                                closesocket(pContext->m_Socket);
                                it = m_ClientList.erase(it);
                                delete pContext;
                                pContext = NULL;
                                break;
                        }

                        it ++;
                }
       
                LeaveCriticalSection(&m_cs);

                //Smiler_ServerDestroy();
        }
83_avatar_middle
最佳答案
0 
在线会员 发表于 2015-8-21 11:30:23 | 显示全部楼层
本帖最后由 mofa005 于 2015-8-21 11:34 编辑

哎只能遍历了,效率超常的低。。。。。

不考虑效率的话,建议这样:

if(std::find(v.begin(), v.end(), value) != v.end())
{

    //找到

}
else
{

    //没找到

}


74_avatar_middle
最佳答案
0 
在线会员 发表于 2015-8-23 13:28:02 | 显示全部楼层
用 std::set(set使用二叉排序樹 保存數據) 才有查詢功能
std::vector 只是動態數組 功能 和普通數組差不多
不過 我更愛用 boost::unordered_set(使用 散列表保存數據) 查詢效率更佳 boost::unordered_set用法 基本同 std::set

#include<set>
std::set<int> datas;
int d = 1102;
datas.insert(d);
auto find = datas.find(d);
std::cout<<find != data.end()<<"\n";
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-11-24 20:56

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表