小编Ram*_*ary的帖子

使用std :: map <t1,t2> :: erase(迭代器位置)?

我在cplusplus.com读到,std::map通过将迭代器作为参数传递来删除a中元素的操作是常量时间.

如果我没有错(如果我是,请纠正我)迭代器基本上是指向地图中元素的指针,++运算符只返回当前元素的有序后继,我猜这是如何在遍历时实现排序结果std::map.

现在如果地图是一棵红黑树,不应该删除一个元素(使用它的地址)是对数时间操作,我不知道他们是如何在恒定时间内完成的(除非存在高度内存浪费的替代方法) .

c++ algorithm stl red-black-tree data-structures

9
推荐指数
1
解决办法
303
查看次数

CMake with boost(在Windows上):找不到库?

我正在尝试使用CMake构建我的项目.我也使用提升.我的CMakeLists.txt文件中的find package语句是:

find_package(Boost 1.42 REQUIRED COMPONENTS

蟒蛇

系统

文件系统

系列化

线

program_options

正则表达式

test_exec_monitor)

构建失败,我得到的错误消息是:找不到以下Boost库:

      boost_system
      boost_filesystem
      boost_serialization
      boost_thread
      boost_program_options
Run Code Online (Sandbox Code Playgroud)

当我检查我的lib目录时,我发现这些库是按名称命名的:libboost <library_name> -vc100-mt.lib而不是boost_ <Library_name>

事实上,当我根据boost_ <LibraryName> Prefix重命名我的lib文件中的单个库时,它不会抱怨该库.

我看到两个相同的解决方案:

1.对CMakeLists.txt文件进行更改,以便搜索具有正确前缀(和后缀)的库.

2.Others

什么是最好的.

c++ boost cmake shared-libraries static-libraries

4
推荐指数
1
解决办法
3284
查看次数

C++套接字编程最大TCP/IP套接字缓冲区大小?

我正在使用C++ TCP/IP套接字.根据我的要求,我的客户端必须连接到服务器并读取它发送的消息(这是真的很新,不是吗)但是...在我的应用程序中我必须等待一段时间(通常是1到2小时)在我真正开始阅读消息之前(通过recv()或read()),服务器仍然继续发送消息.

我想知道缓冲区的容量是否有限制,以防止这些消息被读取以及它们的物理内存用于缓冲这些消息?发件人或收件人?

c++ sockets buffer tcpclient tcpserver

3
推荐指数
1
解决办法
2万
查看次数