草庐IT

std=c++11

全部标签

c++ - 在 std::list 中合并(将两个项目融合在一起,用融合替换它们)项目的算法(即破坏性聚类)

抱歉,如果这很明显,我是C++的新手。stackoverflow上似乎有相关的答案,只是我所理解的不足以适用于我的情况。我有一个代表视觉补丁的类实例列表。当特征之间的距离低于阈值时,我想合并这些项目,用合并后的输出替换parent。像这样:使用嵌套for循环遍历所有项目(将每个项目与其他所有项目进行比较)当找到匹配项时(不是同一个实例):从匹配对构造一个新的(子)实例,附加到新列表。从列表中删除两个(父)项继续遍历列表以查找其他匹配项将新列表附加到原始列表。我知道如何使用迭代器在单个for循环中从列表中删除项目,但我不清楚它如何在嵌套循环中工作,因为erase()递增到下一个项目。我可

c++ - 通用等价于 std 函数对象

boost中是否有任何函数对象是std::equal_to、std::greater等函数对象家族的通用等价物?本质上,std::equal_to应该变成类似structgeneric_equal_to{templatebooloperator()(constT&t,constU&u)const{returnt==u;}};我可以看到由于返回类型的问题,std::plus等的通用版本可能会更加棘手(尽管decltype可以解决这个问题)。不过,我看不出std::equal_to函数对象本身需要模板参数的任何可能原因。这些版本肯定存在于boost或STL中的某个地方吗?当然,编写它们很简

c++ - 如何使用 std::map 在 C++ 中构建树结构

我正在尝试用C++编写一种树状结构。就像每棵树都有Twig和树叶一样。一个分支可以包含其他分支以及叶子。现在我的实现要求每个分支和叶子具有不同的功能。例如。走树状结构Root||Branch1Branch2Branch3|||Leaf1Leaf2Branch4NowEachLeafandbranchhasadifferentfunctiontoexecutesoLeaf1willhaveafunctioncalledleaf1_func,Leaf2willhaveleaf2_func,Branch4hasBranch4_func.我最初尝试实现复合设计模式。但这意味着我将拥有与叶子一样

C++11 检查成员的 COM 智能指针

我有一堆类似集合的COM接口(interface),我正在尝试为其编写类似STL的迭代器。我已经让迭代器正常工作并专门化了begin()和end()来返回我的迭代器。一切都很完美!除了,当我尝试使用begin(std::vector)时,它使用的是我对begin()的非常一般的特化。由于这些COM对象不是从基础集合对象扩展的,所以我首先尝试:templateCollectionIteratorbegin(CollTypecoll)我明白为什么重载解析没有为std::vector选择正确的begin(),但我不确定如何解决这个问题。不幸的是,我没有一个基集合类来专门针对coll参数。我假

c++ - 在 C++11 中使用异步的分段​​错误(核心转储)

我创建了一个将现有树对象转换为字符串的函数。字符串格式为parent(child1)(child2(childOfChild2))程序正确输出了字符串,做了一些其他的工作,但是在Segmentationfault(coredumped)这是函数(getTree(this->root)输出整棵树):templatestringTree::getTree(constNode&node){if(node.isLeaf()){returnto_string(node.value);}vector>results;//eachelementrepresentsasubtreeconnectedt

c++ - 使用 native_handle() + pthread_cancel() 取消 std::thread

我正在将之前围绕pthreads的线程包装器转换为std::thread。但是c++11没有办法取消线程。尽管如此,我还是需要取消线程,因为它们可能正在外部库中执行非常冗长的任务。我正在考虑在我的平台中使用给我pthread_id的native_handle。我在Linux(Ubuntu12.10)中使用gcc4.7。这个想法是:#include#include#includeusingnamespacestd;intmain(intargc,char**argv){cout线程被pthreads抛出的异常取消。我的问题是:这种做法会不会有什么问题(除了不可移植)?

c++ - Qt Creator 2.6.1 + Qt 5 + C++11 + MSVC2010 编译器

我正在尝试使用Qt在Windows上构建C++应用。我的设置是:已安装Vs2008、2010、2012已安装Qt5RC1现在,当我#include并尝试使用std::unique_ptr时,它告诉我它没有定义,所以我查看了VS2010header,发现需要定义_HAS_CPP0X,所以我将它作为DEFINES+添加到.pro=_HAS_CPP0X这仍然没有效果,所以我ctrl+clicking#includememory只是为了找到它使用的memoryheader来自:C:\ProgramFiles(x86)\MicrosoftVisualStudio9.0\VC\include里面真

c++ - 将 MPI 与 c++11 和 CUDA 相结合

我正在编写分子动力学模拟,一些内核将使用CUDA进行计算。我从使用一些c++11功能的普通CPU实现开始我的代码。现在我必须添加一些CUDA代码,我必须使用不支持c++11功能的编译器(gcc在我的makefile中,我分别从所有cpp文件创建对象,最后将它们全部链接在一起。此外,我的代码以这样一种方式拆分,即可以使用“现代”编译器编译没有CUDA的部分,而使用旧编译器编译其余部分(利用CUDA)。我现在的问题是,这是否可以,或者我是否会/可能会遇到问题? 最佳答案 我不知道Cuda,但我知道的是将C++98和C++11目标文件链接

c++ - 替代 std::vector 来存储一系列对象

我正在处理数百万个要按顺序访问的数据元素。元素很少增长和收缩,但会以可预测的方式以已知block大小增长和收缩。我正在寻找类似于std::vector的高效集合,它不会重新分配但将数据保存在多个内存块中。每当我将更多对象放入集合中时,如果最后一个block已用完,则会创建并填充一个新block。我不希望有一个随机访问运营商。由于性能问题和一些超出手头问题范围的其他问题,我无法使用std::list。是否有适合我在boost或任何其他库中的要求的现成集合。在尝试自己做饭之前,我想确保货架上没有可用的东西。 最佳答案 在我看来,最好的选

c++ - 删除 std::vector 的元素(并更改大小)而不影响分配的内存

我正在使用如下代码:constintMY_SIZE=100000;std::vectorv;v.reserve(MY_SIZE);//addnomorethanMY_SIZEelementstothevectorf(v);v.clear();//again,addnomorethanMY_SIZEelementstothevectorf(v);v.clear();////etc...//我的代码的重点是存储MY_SIZEdouble的然后执行操作f(std::vector)在那些元素上。在我填满vector并执行操作后,我想去掉所有元素(并将std::vector::size()重置为