草庐IT

std-span

全部标签

c++ - 使用 std::tm 作为 std::map 中的键

我想使用std::tm()作为std::map容器的键。但是当我尝试编译它时,出现了很多(10)个错误。例如:1.errorC2784:'boolstd::operator&,const_Elem*)':couldnotdeducetemplateargumentfor'conststd::basic_string&'from'consttm'c:\programfiles(x86)\microsoftvisualstudio10.0\vc\include\xfunctional1252.errorC2784:'boolstd::operator&)':couldnotdeducete

c++ - std::string 赋值的正确用法

从constchar*构造std::string时,我经常使用以下模式:constchar*p=GetString();std::strings(p);我想我可以使用类似的模式:constchar*p=GetString();std::strings=p;但是,当我想从constchar*赋值给std::string而不是构造时,我有太多选择:s=p;s.assign(p);std::string(p).swap(s);以上选择是否大致相同?我应该更喜欢哪个,为什么? 最佳答案 为了可读性,只需使用惯用的operator=进行赋值。

c++ - 为什么在 for 循环中使用 std::for_each?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Advantagesofstd::for_eachoverforloop所以我在尝试一些C++11特性,我很好奇为什么std::for_each是有益的。做一个for循环会不会更容易,看起来更干净,还是因为我已经习惯了这样做?#include#include#include#includetypedefstd::tuplepow_tuple;pow_tuplepow(intx){returnstd::make_tuple(x,x*x);}voidprint_values(pow_tuplevalues){st

c++ - 为什么 VS2008 std::string.erase() 移动它的缓冲区?

我想逐行读取文件并捕获特定的输入行。为了获得最佳性能,我可以通过读取整个文件并使用指针迭代其内容来以低级方式执行此操作,但这段代码对性能并不关键,因此我希望使用更具可读性和类型安全性的std库样式实现。所以我有这个:std::stringline;line.reserve(1024);std::ifstreamfile(filePath);while(file){std::getline(file,line);if(line.substr(0,8)=="Whatever"){//Dosomething...}}虽然这不是性能关键代码,但我在解析操作之前调用了line.reserve(1

c++ - std::shared_ptr 的用法

如何将std::shared_ptr用于double组?此外,使用shared_ptr的优点/缺点是什么。 最佳答案 这取决于你追求的是什么。如果您只想要一个可调整大小的double数组,请使用std::vector例子:std::vectorv;v.push_back(23.0);std::cout如果共享所述数组的所有权对您很重要,请使用例如std::shared_ptr>例子:std::shared_ptr>v1(newstd::vector);v1->push_back(23.0);std::shared_ptr>v2=v1

c++ - 在 direct3d11 对象上使用 std::shared_ptr 的自定义删除器

当我使用std::shared_ptr并需要一个自定义删除器时,我通常会创建一个对象的成员函数来促进它的销毁,如下所示:classExample{public:Destroy();};然后当我使用共享ptr时,我只是这样:std::shared_ptrptr(newExample,std::mem_fun(&Example::Destroy));问题是,现在我正在使用d3d11,我想将com发布函数用作std::shared_ptr自定义删除器,就像这样std::shared_ptrptr(nullptr,std::mem_fun(&ID3D11Device::Release));但是

c++ - 为什么没有给 std::forward_list 一个 count() 成员函数?

我明白为什么std::forward_listdoesnothaveasize()memberfunction,因为O(1)版本会搞乱某些splice()的复杂性过载,并且由于O(N)version将与标准库的所有其他容器不一致。这也是事实std::list和std::forward_list已经有几个其他成员函数与中的表亲具有相同的语义标准库的一角(merge()、reverse()、remove()、remove_if()、unique()、sort())。那么为什么不是count()O(N)的成员函数提供给std::forward_list的复杂性具有返回std::distanc

c++ - qsort() vs std::sort,比较函数哲学差异

我想知道为什么在qsort(){Cversion}和std::sort()中有两种完全不同的方法来指定比较函数。qsort需要这样的比较函数:不知道为什么需要三种返回值-1、0、+1。intcomp(int*x,int*y){return*x-*y;}而std::sort()的比较函数对我来说看起来更一致,因为它是根据函数编写的,遵循不变量。即如果x小于y函数返回true,则x相对于y处于正确位置boolcomp(intx,inty){returnx当返回一个bool(或具有两个值0和1的int)更简单和干净时,为什么我们需要三个值-1,0,+1? 最佳答案

c++ - boost/STD/AKKA : How do I do actor programming in C++?

(改写问题和描述以便与S.O.兼容)奇怪的是,C++还没有被广泛采用、经过同行评审的actor模型库(按BOOST和STD的顺序)。我看到Theron,但它看起来像一个人和他的代码:无论它有多好,它都不是我希望生产代码依赖的东西。因此,如何在不使用未经证实的库的情况下使用C++进行Actor模型编程?我应该使用哪些BOOST类(class)?注意:我是在面对之前关于S.O.的一两个问题时问这个问题的。当人们搜索“actorC++”时就会出现,因为它们几乎没有吸引力。对于SEESHARP,有thisthread但对于C++,即使是获得中等关注度的问题也是如此thisguy,aquesti

c++ - std::pair 将 first 和 second 分配给语义命名的变量

有一个非常流行的问题是“std::pairvsstructwithtwofields”。但我有一个关于将first和second值重新分配给语义命名变量的问题。在常规情况下,我们有这样的事情:conststd::pairresult=processSomething();std::cout但是如果我们先将它们分配给引用变量呢:conststd::pairresult=processSomething();constint&numTotal=result.first;constint&numSuccessful=result.second;std::cout这使我们无需编写有关first