草庐IT

行人计数

全部标签

c++ - 相同的地址,多个 shared_ptr 计数器,C++ 标准是否禁止?

假设我有如下需求(这只是讨论C++标准的一些想象代码,所以我不会讨论为什么我这样设计它,所以不要打扰我这样的事情:你的设计错误。)T*ptr=newT;shared_ptrp(ptr);shared_ptrq(ptr,SomeDeleterThatDoesnotDeleteButDoSomeOtherStuff());假设逻辑保证p或它的某些拷贝比q的所有拷贝生命周期更长,那么实际上不会有任何问题。我的问题是,它是否被C++标准禁止,例如C++标准明确声明为UB,以便不同的shared_ptr计数器共享相同的地址?谢谢。 最佳答案

c++ - 预处理器计数器宏

有没有办法创建一个COUNTER()宏(遵循C++11/14标准)扩展为一个数字,每次COUNTER()被调用了吗?我已经考虑过了,但找不到让它发挥作用的方法。我没有找到在COUNTER()宏中存储“状态”的方法。示例:#defineCOUNTER()//Implementationgoeshere...#defineUNIQUE_NAME_1()TEST##COUNTER()#defineUNIQUE_NAME_2()TEST##COUNTER()//NotehowtheCOUNTER()macrocanbeusedwithothermacros//(itcannotbeimplem

c++ - 不使用 odr 的数组计数?

有几个很好的理由去选择#includetemplateconstexprstd::size_tARRAY_COUNT_FUNC(T(&arr)[N]){returnN;}而不是#defineARRAY_COUNT_MACRO(arr)(sizeof(arr)/sizeof(*arr))一个重要的区别是,当一个指针(不是数组)被传递给ARRAY_COUNT_MACRO时,它会默默地返回一个无用的答案,但是将相同的参数传递给ARRAY_COUNT_FUNC会导致编译错误指出错误。但是宏确实有一个优点:它的参数是未计算的。#includestructS{intmember_array[5];

c++ - Vulkan 中的描述符集计数歧义

我想在vulkan中绘制两个对象。为实现这一点,我遵循为每个模型创建两个不同描述符集的过程。但是,我对指定所需描述符集计数的结构感到困惑。令我困惑的点如下:在VkDescriptorSetLayoutBinding指定描述符计数VkDescriptorSetLayoutBindingstagingLayoutBinding={};...stagingLayoutBinding.descriptorCount=1;在VkDescriptorPoolSize指定描述符计数VkDescriptorPoolSizestagingPoolSize={};...stagingPoolSize.de

c++ - 何时使用并行计数 - 当内存有问题时使用 MIT HAKMEM 进行位计数?

比特计数可以通过多种方式完成,例如。带有设置位迭代器、未设置位迭代器、带有查找表或并行计数的预计算位。正如我通过搜索网络发现的那样,当未设置位较少时,未设置位迭代器速度很快,而设置位迭代器则相反。但是什么时候应该使用并行计数,尤其是MITHAKMEM(见下文)?它看起来相当快,尽管可能比查找表慢。就速度而言,它总是比设置/未设置位更好吗?除了速度和内存之外,还有其他关于选择哪一个的问题吗?intBitCount(unsignedintu){unsignedintuCount;uCount=u-((u>>1)&033333333333)-((u>>2)&011111111111);ret

c++ - 科学计数法数字的正则表达式?

我正在加载一个.obj文件,其中包含如下行vn8.67548e-0171-1.55211e-016用于顶点法线。我怎样才能检测到它们并将它们带入双重表示法? 最佳答案 一个运行良好的正则表达式是:-?[\d.]+(?:e-?\d+)?可以这样转换为数字:StringinscientificnotationC++todoubleconversion,我想。正则表达式是-?#anoptional-[\d.]+#aseriesofdigitsordots(see*1)(?:#startnoncapturinggroupe#"e"-?#an

c++ - 计数器和累加器有什么区别?

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭10年前。我不确定有什么区别,但这是问题所在。编写一个赋值语句,将名为numStudents的计数器变量更新为1。会不会是:numStudents=numStudents+1?我的另一个问题是编写一个赋值语句,用sales变量中的值更新一个名为total的累加器变量。它会像这样吗:total=total+sales?

c++ - 如何初始化用 auto 关键字声明的循环计数器?

这是我的代码:#include#includevoidcumulative_sum_with_decay(std::vector&v){for(autoi=2;i&v){std::cout{1,2,3,4,5,6,7,8,9,10};cumulative_sum_with_decay(v);printv(v);}当我尝试编译和运行这个程序时,我收到了这些警告:$clang++-std=c++11-Wextrafoo.cpp&&./a.outfoo.cpp:6:24:warning:comparisonofintegersofdifferentsigns:'int'and'std::__

c++ - 创建一个跨 MPI 进程保持同步的计数器

我在使用基本的comm和groupMPI2方法方面有相当多的经验,并且使用MPI进行了相当多的令人尴尬的并行模拟工作。到目前为止,我已经将我的代码结构化为具有一个调度节点和一堆工作节点。调度节点有一个将与模拟器一起运行的参数文件列表。它使用参数文件为每个工作节点播种。工作节点运行它们的模拟,然后请求调度节点提供的另一个参数文件。一旦运行了所有参数文件,调度节点将关闭每个工作节点,然后再自行关闭。参数文件通常命名为“Par_N.txt”,其中N是标识整数(例如-N=1-1000)。所以我在想,如果我可以创建一个计数器,并且可以让这个计数器在我的所有节点之间同步,我就可以消除对调度节点的需

c++ - std::atomic 加载方法在与 std::shared_ptr 一起使用时减少引用计数

我想使用std::atomic在我的代码中,以便可以自动更新shared_ptr,但是在访问shared_ptr时我遇到了问题。atomic上的load()方法似乎减少了shared_ptr上的引用计数,因此我无法在不释放对象的情况下实际使用该对象。这是显示问题的一段简化代码...typedefshared_ptrMyClassPtr;typedefatomicMyClassAtomicPtr;//1.MyClassPtrptr(newMyClass());printf("1.use_count=%d\n",ptr.use_count());//2.MyClassAtomicPtrat