草庐IT

it_begin

全部标签

c++ - 为什么 "begin/end"与 "first/last"存在差异?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion为什么容器提供"begin"/"end"迭代器而算法需要"first"/"last"迭代器?例如:vector提供.begin()和.end()(cppreference.com,cplusplus.com)。sort需要参数first和last(cppreference.com,cplusplus.com)。编辑:发现一个更大的差异。不仅仅是算法使用“first/last”,它也是容器构

c++ - 无限循环heisenbug : it exits if I add a printout

这是我的源代码:#include#includeusingnamespacestd;doubleup=19.0+(61.0/125.0);doubledown=-32.0-(2.0/3.0);doublerectangle=(up-down)*8.0;doublef(doublex){return(pow(x,4.0)/500.0)-(pow(x,2.0)/200.0)-0.012;}doubleg(doublex){return-(pow(x,3.0)/30.0)+(x/20.0)+(1.0/6.0);}doublearea_upper(doublex,doublestep){ret

c++ - 分配给 std::vector<T>::begin() 的结果是什么?

我对左值和右值略有了解。所以据我所知,我们不能分配给右值,但非常量左值是可以的。#include#includeintmain(){std::vectorv{1,2,3,4,5};v.begin()=v.end()-2;std::cout为什么我可以赋值给begin()但它对元素什么都不做? 最佳答案 v.begin()是一个迭代器。分配给迭代器不会分配给迭代器指向的值。另外,因为v.begin()是纯右值,您分配给的对象在行尾被销毁,而不影响v或其拥有的任何“永久”内存。如果v.begin()是原始指针,编译器会发出错误以尝试分配

c++ - 我可以将 std::begin 和 std::end 专门化为 equal_range() 的返回值吗?

header提供std::equal_range(),以及一些将它作为成员函数的容器。这个函数让我困扰的是它返回一对迭代器,这使得从开始迭代器到结束迭代器的迭代变得乏味。我希望能够使用std::begin()和std::end()这样我就可以使用C++11基于范围的for循环。现在,我听到了关于特化的矛盾信息std::begin()和std::end()-有人告诉我,向std命名空间添加任何内容都会导致未定义的行为,而我也被告知您可以提供自己的std::begin()特化。和std::end().这就是我现在正在做的:namespacestd{template::iterator_ca

c++ - O(logn) 中 std::set begin() 和 std::set 迭代器之间的距离

我需要在std::set中找到一个元素的索引。该索引可以可视化为迭代器距起点的距离。一种方法可以是:for(inti=0,set::iteratorit=s.begin();it!=iteratorToBeFound;++it,++i);这显然需要O(n)的时间。但是我们知道,set内部实现的二叉搜索树到根的距离可以在O(logn)时间内找到。他们有什么方法可以实现在C++集合中以O(logn)时间查找索引吗? 最佳答案 您可以使用函数std::set::find搜索元素x并计算distance到集合的第一个迭代器。std::dis

C++11 : error: ‘begin’ is not a member of ‘std’

我正在尝试执行以下操作:source=newint[10];dest=newint[10];std::copy(std::begin(source),std::end(source),std::begin(dest));但是,编译器报如下错误。copy.cpp:5434:14:error:‘begin’isnotamemberof‘std’copy.cpp:5434:44:error:‘end’isnotamemberof‘std’copy.cpp:5434:72:error:‘begin’isnotamemberof‘std’我已经包含了所需的代码中的header。有人可以帮我解决这

c++ - C/C++ : is it faster to assign a 0 to an unsigned long variable or to xor the variable with itself?

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我意识到差异可以忽略不计,但在尝试将unsignedlong清零时哪个更有效?unsignedlongx;...x=0;--OR--x^=x;泰勒

c++ - 有没有办法使用独立的 `std::begin` 和 const_iterator?

我喜欢一致性。我最近问了使用std::begin的问题与例如std::vector::begin,并且一致的决定似乎是使用前者,因为它更通用。但我想我在泥泞中找到了一根棍子。有时,您想传达在循环遍历容器时不会更改容器,因此调用std::vector::cbegin.如果您有时这样做会使您的代码非常不对称iter=v.cbegin()其他时候做了iter=begin(v).有没有办法解决这种不对称的问题,您是否仍会推荐std::begin鉴于这些知识?为什么C++没有std::cbegin? 最佳答案 C++14有cbegin/cen

C++,opencv : Is it safe to use the same Mat for both source and destination images in filtering operation?

过滤操作涉及卷积,位置(x,y)处的过滤值也将取决于像素(x-a,y-b)和a的强度,b>0.因此直接使用同一图像作为目标将导致意外行为,因为在计算过程中我使用了一些已经过滤的数据而不是原始数据。问题opencv是否在cv::GaussianBlur(.)、cv::blur等函数内部管理这个问题?为src和dst参数提供对相同Mat的引用是否安全?谢谢 最佳答案 是的,如果你这样做就不会有任何问题。我做过几次这样的事情。openCV会自动处理它。我测试了下面的代码,它运行良好:intmain(intargc,char*argv[])

c++ - 以宽松的顺序读取共享变量 : is it possible in theory? 在 C++ 中是否可能?

考虑以下伪代码:expected=null;if(variable==expected){atomic_compare_exchange_strong(&variable,expected,desired(),memory_order_acq_rel,memory_order_acq);}returnvariable;当执行variable==expected检查时,观察没有“获取”语义。在我看来,desired总共至少会被调用一次,每个线程最多一次。此外,如果desired永远不会返回null,那么这段代码将永远返回null.现在,我有三个问题:以上一定是真的吗?即,即使每次读取都没