`
pleasetojava
  • 浏览: 730002 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

ACE_Hash_Map的使用示例

阅读更多

一位网友说他不能在ACE中正常地使用嵌套使Hash_Map,我写下下面的代码作了简单测试,发现在ACE使用Hasp_Map还是可以的.

// TestHaspMap.cpp:Definestheentrypointfortheconsoleapplication.
//

#include
" stdafx.h "
#include
" ACE/Basic_Types.h "
#include
" ACE/Map_Manager.h "
#include
" ACE/SString.h "
#include
" ACE/Log_Msg.h "
#include
" ACE/Null_Mutex.h "

class PhoneNumber
{
public :
PhoneNumber(
const char * number):number_(number)
{

}
const char * getNumber( void )
{
return number_.c_str();
}
private :
ACE_SStringnumber_;
};



typedefACE_UINT16CONNECTION_ID;

typedefACE_Null_MutexMAP_MUTEX;

typedefACE_Map_Manager
< CONNECTION_ID,PhoneNumber * ,MAP_MUTEX >
CONNECTION_MAP;

typedefACE_Map_Iterator
< CONNECTION_ID,PhoneNumber * ,MAP_MUTEX >
CONNECTION_MAP_ITERATOR;

typedefACE_Map_Entry
< CONNECTION_ID,PhoneNumber *>
CONNECTION_MAP_ENTRY;

typedefACE_Map_Manager
< CONNECTION_ID,CONNECTION_MAP * ,MAP_MUTEX >
MAP_MAP;

typedefACE_Map_Iterator
< CONNECTION_ID,CONNECTION_MAP * ,MAP_MUTEX >
MAP_MAP_ITERATOR;

typedefACE_Map_Entry
< CONNECTION_ID,CONNECTION_MAP *>
MAP_MAP_ENTRY;


int ACE_TMAIN( int argc,_TCHAR * argv[])
{


CONNECTION_MAPconnection_map;
PhoneNumberme(
" 13717928*** " );
PhoneNumberoffice(
" 010-82378*** " );

PhoneNumberhome(
" 13366686** " );
int result = - 1 ;
result
= connection_map.bind( 1 , & me);
ACE_ASSERT(result
== 0 );
result
= connection_map.bind( 2 , & office);
ACE_ASSERT(result
== 0 );
result
= connection_map.bind( 3 , & home);
ACE_ASSERT(result
== 0 );
result
= connection_map.bind( 5 , & home);
ACE_ASSERT(result
== 0 );

connection_map.unbind(
3 );
CONNECTION_MAP_ITERATORit(connection_map);

for (CONNECTION_MAP_ENTRY * i = 0 ;
it.next(i)
!= 0 ;
it.advance())
{
PhoneNumber
* phone = i -> int_id_;
ACE_DEBUG((LM_INFO,ACE_TEXT(
" 连接号码 %d,电话号码%s\n " ),
i
-> ext_id_,
phone
-> getNumber()));
}

PhoneNumber
* any_phone = 0 ;
CONNECTION_IDany_id
= 5 ;

result
= connection_map.find(any_id,any_phone);
if (result != - 1 )
{
ACE_DEBUG((LM_INFO,ACE_TEXT(
" 连接号码 %d,电话号码%s\n " ),
any_id,
any_phone
-> getNumber()));
}
else
{
ACE_DEBUG((LM_INFO,ACE_TEXT(
" 连接号码 %d,电话号码%s\n " ),
any_id,
" notfound. " ));
}

MAP_MAPmap_map;
map_map.bind(
1 , & connection_map);
size_tn
= map_map.current_size();
MAP_MAP_ITERATORmap_it(map_map);

for (MAP_MAP_ENTRY * j = 0 ;
map_it.next(j)
!= 0 ;
map_it.advance())
{
CONNECTION_MAP
* cur_map = j -> int_id_;
size_tcount
= cur_map -> current_size();
PhoneNumber
* any_phone2 = 0 ;
if (cur_map -> find( 2 ,any_phone2) !=- 1 )
{
ACE_DEBUG((LM_INFO,ACE_TEXT(
" 内部map中电话号码%s\n " ),
any_phone2
-> getNumber()));
}
}

return 0 ;
}

分享到:
评论

相关推荐

    Nginx安装url_hash插件.doc

    在Nginx的配置文件(如`/etc/nginx/nginx.conf`)中,设置负载均衡部分以使用url_hash策略。例如: ```nginx upstream backend { server backend1.example.com; server backend2.example.com; ip_hash; } ...

    gen_lex_hash_pc

    在实际操作中,使用`gen_lex_hash_5.1.51_pc`或`gen_lex_hash_5.1.63_pc`进行交叉编译通常包含以下步骤: 1. 配置编译环境,确保拥有正确的交叉编译工具链。 2. 解压并进入`gen_lex_hash_5.1.x_pc`目录。 3. 使用...

    UMAT_Hashin3D_hashin

    标题 "UMAT_Hashin3D_hashin" 指涉的是一个专门针对复合材料损伤分析的三维子程序,该程序基于Hashin破坏准则。在有限元分析(FEA)中,用户自定义材料(User-Defined Material,UMAT)是实现特定材料行为建模的一种...

    nginx_upstream_hash-0.3.1.tar.gz

    《Nginx Upstream Hash模块详解与应用》 在Web服务器领域,Nginx以其高效、轻量级的特性赢得了广泛的应用。为了实现更灵活的负载均衡策略,Nginx提供了一系列的upstream模块,其中,`nginx_upstream_hash`模块是...

    ngx_http_consistent_hash-master.zip

    3. `conf`: 配置文件示例,展示如何在 Nginx 配置中启用模块。 4. `Makefile`: 用于编译源代码的文件。 5. `LICENSE`: 许可证文件,说明该模块的开源许可条款。 **知识点详解:** 1. **Nginx 服务器:** Nginx 是...

    mysql_hash.exe/使用hash登陆mysql

    在获取到mysql用户的hash后, 可用hash直接登陆mysql进行操作 比如我们注入出数据库的hash,但是没办法拿到webshell 我们可以使用mysql_hash,用hash登陆并控制数据库 使用方法: mysql_hash.exe -u root -p Enter ...

    dense_hash_map:STD的简单替代

    jg :: dense_hash_map 一个简单的std::unordered_map替代品,具有更好的性能,但失去了稳定的寻址方式,这是一种折衷方案。 在此处查看此哈希图的详细说明: : 生成状态: 特拉维斯(Travis):

    Nginx如何配置url_hash转发方式.docx

    解压nginx-0.7.58.tar.gz和Nginx_upstream_hash-0.3.1.tar.gz,进入nginx-0.7.58目录,使用`patch`命令应用补丁。 3. **安装Nginx**: 创建用户组和用户,例如`groupadd nginx`和`useradd -g nginx nginx`。然后...

    基于应变和应力的Vumat子程序_hashin失效准则_动态应变_拉伸失效_hashin_vumat.zip

    这个压缩包文件“基于应变和应力的Vumat子程序_hashin失效准则_动态应变_拉伸失效_hashin_vumat.zip”显然包含了与使用Vumat子程序来模拟材料失效,特别是Hashin失效准则相关的资料,以及动态应变和拉伸失效的应用。...

    pwwHash.zip_Big!_hash map

    在IT领域,哈希表(Hash Map)是一种高效的数据结构,尤其在处理大数据时,它的作用至关重要。"pwwHash.zip_Big!_hash map"这个文件标题暗示了这是一个关于大规模数据处理和哈希映射的专题,可能包含了某种特定的...

    STATUS_INVALID_IMAGE_HASH.zip

    标题 "STATUS_INVALID_IMAGE_HASH.zip" 暗示了一个与操作系统或浏览器有关的错误,特别是针对Chrome和Edge浏览器。这个问题通常涉及到系统中某个可执行文件(DLL或EXE)的哈希值与预期不符,导致安全策略无法验证其...

    nginx_upstream_hash-0.3.2.tar.gz

    4. `hash_method`: 设置哈希算法,nginx默认使用MD5,也可以选择其他的哈希算法,如SHA1。 5. `consistent`: 添加此选项可以使用一致性哈希算法,这有助于在添加或删除服务器时减少请求的重新分布。 在部署nginx_...

    md5_hash.rar_hash_md5_hash

    在本项目中,"md5_hash.rar_hash_md5_hash" 的标题暗示了这是一个关于C++实现MD5哈希算法的工程。描述中的 "C++ implementation for md5" 进一步确认了这个项目的焦点。标签"hash"和"md5_hash"也与哈希计算相关。 ...

    hash_map的简单应用

    hash_map

    vuamt and umat_hashin_UMAT_Hashin_umathashin_vumat_

    这些文件可能包含了实现Hashin模型的详细算法、参数设置指南,或者是示例输入和输出数据,帮助用户理解如何在实际工程问题中使用该模型。 总之,这个压缩包提供的内容涉及到了材料力学的高级主题,特别是关于纤维...

    Nginx_upstream_hash-0.3.1.tar.gz

    这个模块的工作原理是:当一个请求到达Nginx时,它会计算请求URL的哈希值,并使用这个哈希值作为依据来选择后端服务器。这种策略常用于实现内容定位或者保持会话粘滞性,例如,如果一个用户的多次请求具有相同的URL...

    TBB并发容器 学习笔记

    3. `concurrent_hash_map`:这是一个线程安全的哈希映射,允许并发的读写操作。它在多线程环境下提供高效的数据查找和更新,同时确保数据一致性。 相比于传统的STL容器,TBB并发容器的优势在于它们在设计时考虑了多...

    HASHIN.rar_ABAQUS_Hashin失效准则 abaqus_abaqus hashin_abaqus 三维Hashi

    描述中提到的"abaqus用户子程序,Hashin失效准则,abaqus显示分析,使用三维实体单元"意味着这个压缩包可能包含了一个使用ABAQUS用户子程序(通常以.INP文件格式)实现Hashin失效准则的示例,以及如何在ABAQUS中进行...

    hash_map的详解

    hash_map使用 ##### 2.1 一个简单实例 让我们来看一个简单的例子,演示如何使用`hash_map`来存储整数ID和其相关信息: ```cpp #include &lt;hash_map&gt; #include #include using namespace std; int main() { ...

Global site tag (gtag.js) - Google Analytics