草庐IT

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++ - std::getline 在 for 循环中不起作用

我正在尝试将用户的输入收集到一个字符串变量中,该变量在指定的时间内接受空格。因为通常的cin>>str不接受空格,所以我会使用中的std::getline这是我的代码:#include#include#include#includeusingnamespacestd;intmain(){intn;cin>>n;for(inti=0;i有什么想法吗? 最佳答案 如果输出存储在local中的内容(顺便说一下,这是一个糟糕的变量名:P),你就会明白为什么会失败:#include#include#include#includeusingna

c++ - 在 for(-each) 自动循环中删除项目

在这样的for循环中使用auto变量时,有没有办法删除特定元素?for(autoa:m_Connections){if(something){//Erasethiselement}}我知道我可以说for(autoit=m_map.begin()...或for(map::iteratorit=m_map.begin()...并手动增加迭代器(并删除),但如果我能用更少的代码行来完成,我会更开心。谢谢! 最佳答案 你不能。基于范围的循环使范围内的简单迭代变得更简单,但不支持使范围或其使用的迭代器无效的任何操作。当然,即使支持,您也无法在

c++ - 为什么我们应该尽量减少循环中 break 和 continue 的使用?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion当我还是一名新生时,我们的导师允许我们在循环中使用break或continue。我大部分时间都是这样做的,因为它终止/继续循环。而现在我大二了,我的导师告诉我使用break/continue是不可取的。你能告诉我为什么吗?顺便说一句,什么会影响break/continue?

c++ - 紧密循环中虚函数的成本

我的游戏对象具有虚函数Update()。有很多游戏对象(目前超过7000个)并且循环调用所有对象的更新(除其他外)。我的同事建议我们应该完全删除虚函数。可以想象,这将需要进行大量重构。我看过thisanswer但就我而言,分析意味着我必须更改大量代码。因此,在我考虑开始之前,我想我会在这里征求意见,以了解重构在这种情况下是否值得。请注意,我已经分析了循环的其他部分,并一直在尝试优化耗时最长的部分。我怀疑这种情况下的虚函数调用是我不应该担心的事情,但是在我分析之前我不能确定,并且在我更改代码(很多)之前我不能分析。另请注意,一些更新函数非常小,而另一些则更大更复杂。编辑:有多个答案可以提

c++ - for循环中的混合声明

我想写一个for循环,如下所示;在初始化部分,我想声明不同类型的变量:for(intloop=0,longresult=1;loop但它给出了错误,意味着它是不允许的。有什么解决办法吗? 最佳答案 不要这样写代码。这是减速带代码,总有一天有人会读到这个然后去Whoa!并浪费他5分钟的时间来弄清楚你为什么这样做。那是他永远不会回来的5分钟,你会无缘无故地欠他。如果限制result的范围真的那么重要,那么使用额外的一组大括号:{longresult=1;for(intloop=0;loop现在将其放在首位,您将编写出不仅可读而且可重用的

c++ - 我是否在简单的 OpenMP for 循环中误用了引用变量,还是 clang 错误?

我想我发现了一个clang++错误,但希望就我的代码是否正确提出建议。Clang静态分析器认为它没问题,并且编译没有问题,但是当使用clang3.7编译时,它从传递的引用vector中获取的大小完全错误。GCC和clang3.8都给出了正确的答案。我已将其简化为这个测试用例:#include#include//includingorexcludingompmakesnodifference#includevoiddoSomething(std::vector&k){#pragmaompforfor(inti=0;iv;v.push_back(1);std::vector&j=v;doS

c++ - 紧密物理和碰撞循环中的缓存友好内存访问

我正在编写一个物理引擎,并且很难找到设计数据存储的好方法。我想要的功能:有一个代表PhysicsBody的类有一个代表碰撞体积的类(比方说一个盒子)每个物理体都可以附加一个碰撞体可能有没有碰撞体的物理体可选:没有物理体的CollisionVolume。(想想触发音量)现在我基本上有两个循环。一个更新模拟中的物理体。它更新它们的位置/速度/旋转。第二个循环对所有碰撞体执行碰撞检测。它只是一个嵌套的for循环,用于检查每对碰撞体积之间的碰撞。(我知道它可以做得更好,但这是一个单独的主题)我知道理想的方式是将对象存储在连续的数组中。std::vectorm_bodies;std::vecto

c++ - 并行循环中的惰性 vector 访问

在性能关键的并行代码中,我有一个vector,其元素是:计算成本很高,结果是确定性的(给定位置的元素值将仅取决于位置)随机访问(通常访问次数大于或远大于vector的大小)集群访问(许多访问请求相同的值)vector由不同的线程共享(竞争条件?)为避免堆碎片整理,永远不要重新创建对象,而是尽可能重置和回收放置在vector中的值将由多态对象提供目前,我预先计算了vector的所有可能值,因此竞争条件应该不是问题。为了提高性能,我正在考虑创建一个惰性vector,以便代码仅在请求vector元素时才执行计算。在并行区域中,可能会发生多个线程同时请求并可能计算同一元素的情况。我如何处理这种

C++ - 将对象添加到 std::vector,在循环中实例化

我是专家级别的Java程序员,正在尝试将我的知识移植到C++。这不是家庭作业,只是我试图学习C++等价物的概念。我想做的是使用循环“生成”自定义类型的对象列表。这就是我在Java中的做法:publicclassTestClass{privateArrayList_exampleObjects;privateint_numObjects=10;publicvoidpopulateList(){_exampleObjects=newArrayList();for(inti=0;isuper简单的东西。创建一个列表,遍历任意循环并向其中添加对象。然后,循环遍历这些对象并将它们用于任何目的。测