草庐IT

count_device

全部标签

c++ - 为什么 std::count 和 std::find 没有优化为使用 memchr?

我正在阅读sehe'sanswer至thisquestion并且惊讶地看到sehe发现使用std::memchr的手写循环比使用std::count快3倍以上(看评论)。使用std::count的代码可以在编辑2中看到,但它基本上可以归结为:constautonum_lines=std::count(f,l,'\n');对比uintmax_tnum_lines=0;while(f&&f!=l)if((f=static_cast(memchr(f,'\n',l-f))))num_lines++,f++;我本来希望std::count版本至少和std::memchr版本一样快——原因与us

C++ 使用带字符串的标准算法,带 isdigit 的 count_if,函数转换

我想以最短的代码方式计算字符串中的所有数字。我这样试过:#include#includeunsignedcountNumbers(conststd::strings){returncount_if(s.begin(),s.end(),isdigit);}错误信息是:a.cc:Infunction‘unsignedintcountNumbers(std::string)’:a.cc:5:45:error:nomatchingfunctionforcallto‘count_if(std::basic_string::const_iterator,std::basic_string::con

c++ - 我可以通过重新播种结合 random_device 和 mt19937 生成加密安全随机数据吗?

我需要在c++11中生成加密安全的随机数据,我担心对所有数据使用random_device会严重限制性能(参见StephanT.Lavavej的“rand()ConsideredHarmful”幻灯片23,他说当他(在他的系统上)测试它时,random_device是1.93MB/s而mt19937是499MB/s)因为这段代码将在移动设备(Android通过JNI和iOS)上运行,这可能比上面的数字慢。此外,我知道mt19937不是加密安全的,来自wikipedia:“观察足够数量的迭代(在MT19937的情况下为624,因为这是产生future迭代的状态vector的大小)允许预测

c++ - 使用 boost::iostreams::tee_device?

有人可以帮助我吗?我正在尝试执行以下操作:#include#include#include#includenamespaceio=boost::iostreams;typedefio::stream>Tee;std::stringstreamss1,ss2;Teemy_split(ss1,ss2);//redirectstobothstreamsmy_split但它不会在VC9中编译:c:\lib\boost_current_version\boost\iostreams\stream.hpp(131):errorC2665:'boost::iostreams::tee_device:

c++ - 为什么 shared_ptr 实现中的 ref_count 是 int*

我见过几个shared_ptr的实现,例如here.它们都将ref_count声明为int*。我不明白如果它只是一个int我们会失去什么。谢谢!templateclassshared_ptr{T*ptr;int*ref_count;/***Initializestherefcountusedfortrackingtheusage.*/voidinitialize_ref_count(){if(ref_count!=nullptr)return;try{ref_count=newint;*ref_count=1;}catch(std::bad_alloc&e){std::cerr

c++ - C++ STL set容器的count()方法为什么这样命名?

它真正检查的是contains()而不是出现的次数,对吧?也不允许重复,所以contains()不是比count()更好的名字吗? 最佳答案 这是为了使其与其他容器类保持一致,因为多态性的一个重要方面是能够使用相同的API处理不同的类。它确实实际上返回了计数。一个集合的计数只能为零或一个这一事实不会改变这一方面。它与集合对象根本上并没有什么不同,后者只允许同时具有每个“值”的两个事物。在那种情况下,它会返回零、一或二的计数,但它仍然是一个计数,与集合相同。标准的相关部分是C++1123.2.4,其中讨论了关联容器set、multis

c++ - Boost中irange和counting_range的区别

irange之间有什么区别?和counting_range?我需要irange来快速生成一系列整数,如下所示:autoexample=boost::irange(0,5);///resultis{0,1,2,3,4}但是注意到某处的一个示例(链接丢失),该示例使用counting_range来完成相同的任务。对这两者的区别有简单的解释吗? 最佳答案 主要区别在于irange是一个随机访问范围,而counting_range不是。counting_range基于Boost.Iterator的counting_iterator它直接使用

c# - 编程竞赛题目: Counting Polyominos

请看我自己的回答,我想我做到了!你好,编程竞赛的一个示例问题是编写一个程序,找出给定数量的石头可能有多少个多米诺骨牌。所以对于两block石头(n=2)只有一个多联骨牌:XX您可能认为这是第二种解决方案:XX但事实并非如此。如果可以旋转,则多联骨牌不是唯一的。所以,对于4个石头(n=4),有7个解决方案:XXXXXXXXXXXXXXXXXXXXXXXXXXXX应用程序必须能够找到1的解决方案PS:使用listofpolyominosonWikipedia不允许;)编辑:当然问题是:如何在Java、C/C++、C#中执行此操作我是用Java开始这个项目的。但后来我不得不承认我不知道如何使

c++ - count_until 和 accumulate_until 的实现?

给定输入序列,标准算法std::count和std::accumulate分别计算特定值(或std::count_if的谓词匹配)的出现次数和给定关联运算(求和、乘积、bool或/和、最小/最大值、字符串连接等)的累积。如果想知道输入序列是否恰好/至少/至多包含n怎么办?出现/匹配,或累积到恰好/至少/至多n的总和?蛮力方法是比较std::count的结果或std::accumulate针对目标n,但是当计数或累积超过输入序列的一半时,这将错过提前退出的机会。例如,做一个count_until作为templateautocount_until(InputItfirst,InputItl

c++ - CUDA __device__ 未解析的外部函数

这个问题在这里已经有了答案:Externalcallsarenotsupported-CUDA(1个回答)关闭7年前。我试图了解如何在单独的头文件中解耦CUDA__device__代码。我有三个文件。文件:1:int2.cuh#ifndefINT2_H_#defineINT2_H_#include"cuda.h"#include"cuda_runtime.h"#include"device_launch_parameters.h"__global__voidkernel();__device__intk2(intk);intlaunchKernel(intdim);#endif/*IN