草庐IT

STD_PROP_LIST

全部标签

c++ - 我是唯一一个觉得 std::move 有点太难理解的人吗?

所以我一直在SO和其他地方阅读有关std::move、std::forward、右值、左值广告等的内容。但我发现我无法把握它。尽管我有时会进行修复,但我认为我了解有关指针、引用等的基本知识,这些都是在此之前在C++中的。是我还是这些东西变得太重了? 最佳答案 如果您还没有阅读原始提案,我建议您阅读:AProposaltoAddMoveSemanticsSupporttotheC++Language它非常清楚地列出了可以使用右值引用和move语义解决的问题,以及如何使用右值引用和move语义来解决这些问题。标准委员会的文件往往内容繁多

c++ - 如何比较 std::set 的前 N ​​个元素?

如何比较两个集合的前“n”个元素是否相等?我的以下程序不起作用,为什么?#include#include#include#includeusingnamespacestd;intmain(){intn=2;intmyints1[]={75,23,65,42,13};intmyints2[]={70,23,65,42,13};setmyset1(myints1,myints1+5);setmyset2(myints2,myints2+5);if(std::equal(myset1.begin(),myset1.begin()+n,myset2.begin()))//errorstd::c

c++ - std::getline 用于以逗号分隔的表文件,在某些字段周围使用引号

我基本上是在运行以下代码。此代码逐行检查并获取通用逗号分隔表文件的不同字段。我的问题是有时“标题”字段中可以包含逗号。当它出现时,它会被引号包围,例如:“this,thisismytitle”。但是当我的代码看到逗号时,它只是将其后的所有内容都视为下一个字段。并不是所有的标题都有引号,只有那些有逗号的。我的问题是我不知道如何让代码检查这个....我怎样才能让我的代码检查这个问题?非常感谢,你们。这对我的有酬工作意义重大!while(getline(BookLine,ImpLine,'\n'))//Geteachline{//createastringstreamfromthestand

c++ - 具有相同值但不同类型的参数的 std::floor 函数的不同值

考虑以下几点:#include#includeintmain(){usingstd::cout;usingstd::endl;constlongdoublebe2=std::log(2);cout输出3,23,3为什么输出不同?我在这里缺少什么?这里还有键盘链接:http://codepad.org/baLtYrmy我在linux上使用gcc4.5,如果这很重要的话。 最佳答案 当我添加这个时:cout.precision(40);我得到这个输出:2.999999999999999839754918906642444653698,2

c++ - 并行操作 std::vector 的不同元素

假设我有一个std::vector.vector很大(>1000个元素)并且每个Object*需要对其进行大量计算。然后在每个元素上运行每个计算的for循环可以很容易地并行化。事实上,我可以并行处理所有1000个元素以获得最大加速(“令人尴尬的并行?”)现在我想知道两件事:1)读写std::vector的不同元素是否安全没有锁?(不是修改vector本身!)2)是否有简单的方法或约定或模式可以遵循来切断for循环并分派(dispatch)给线程? 最佳答案 1)是2)您可以使用OpenMP来并行处理vector。如果您使用的是Mic

c++ - 使用 << 运算符将二进制文件写入 std::fstream

出于某种原因,这种排序代码没有像我预期的那样工作:std::fstreamtheFile;theFile.open(,std::ios::beg|std::ios::out|std::ios::binary|std::ios::trunc);theFile可能是什么问题?我正在使用VisualStudio2010附带的MicrosoftC++编译器。 最佳答案 运算符的全部目的是将格式化数据写入流。如果你想写二进制数据,你应该使用ostream::write()或ostream::put().

c++ - 确定与 std::function<R(T1,T2)> 兼容的函数类型集的规则?

假设我有这个,std::functionfs;那么我如何确定fs的函数集(或函数对象)可以初始化吗?以下哪些是允许的,哪些不是:std::functionfs=[](int,int){returnint(10);};std::functionfs=[](char,char){returnchar(10);};std::functionfs=[](int,short){returnint(10);};std::functionfs=[](double,int){returnfloat(10);};std::functionfs=[](int,wchar_t){returnwchar_t(

c++ - 为什么 std::move() 没有 _Remove_reference 就不能工作?

如您所知,_Remove_reference的存在是为了将T&转换为T或将T&&转换为T。我怀着一种玩乐的心情写了下面的代码,它根本没有像我预期的那样工作,但不知道为什么。templatestruct_Remove_reference{//removereferencetypedef_Ty_Type;staticvoidfunc(){cout//struct_Remove_reference//{//removereference//typedef_Ty_Type;//staticvoidfunc(){cout//struct_Remove_reference//{//removerv

c++ - 为什么memcpy复制Eigen矩阵数据失败,std::copy成功?

当我使用Eigen创建矩阵时,如下所示:Eigen::MatrixXdM(3,3);M产生147258369我可以用指针遍历数据,打印每个元素:double*d=M.data();for(inti=0;i产生123456789我还可以使用std::copy将其复制到堆栈上相同类型的数组,然后打印该数组的元素:doubledata_copy[9];std::copy(M.data(),M.data()+M.size(),data_copy);for(inti=0;i产生123456789但是,我似乎无法使用memcpy进行等效复制。这只能复制第一个元素:doubledata_memcop

c++ - 将 std::function 用于 API(跨模块边界)

我很确定我知道这个问题的答案(认为不是),但是是否可以在API中按值安全地接受/返回std::function(跨模块边界)?我认为“不”,因为我认为没有任何保证可以保证一个供应商的std::function实现与其他供应商的兼容。是这样吗?如果我怀疑答案是否定的,你们都是如何处理这种事情的?我可能不得不求助于实现我自己的,或者只是避免一起使用std::function之类的东西(例如:使用函数指针或functionoids)。:-(我发现自己以前在很多情况下都这样做过(重新发明了很多标准C++库,当然令人遗憾的是,甚至制作了我们自己的符合STL的vector类型,同时支持范围构造器和