草庐IT

each_pair

全部标签

c++ - 在特定条件下跳过 std::for_each 中的迭代

我正在开发一个需要遍历范围的程序。我想知道我是否可以像在基于范围的for循环中使用时那样使用continue。工作:std::vectorv={"foo","bar","baz","foobar"};for(autos:v){if(*s.front()=='b')continue;std::cout不工作:std::vectorv={"foo","bar","baz","foobar"};std::for_each(v.begin(),v.end(),[](conststd::string&s){if(*s.front()=='b')continue;std::cout

kotlin - 为什么 Kotlin Pair 中的条目不可变?

我有一个MutableListofPairs,我想减少第一个条目的值,所以我的条件是通过(更改):while(n>0){if(sibice[i].first>0){sum+=sibice[i].second//sibice[i].first--willnotcompilen--}elsei++}但是Pair类不允许我这样做,除了创建我自己的对之外还有其他解决方法吗?为什么会出现这种情况? 最佳答案 与所有实体一样,可变性也会出现问题。在您的情况下,您可以使用一对新值更新列表条目。valnewPair=oldPair.copy(fir

kotlin - 为什么 Kotlin Pair 中的条目不可变?

我有一个MutableListofPairs,我想减少第一个条目的值,所以我的条件是通过(更改):while(n>0){if(sibice[i].first>0){sum+=sibice[i].second//sibice[i].first--willnotcompilen--}elsei++}但是Pair类不允许我这样做,除了创建我自己的对之外还有其他解决方法吗?为什么会出现这种情况? 最佳答案 与所有实体一样,可变性也会出现问题。在您的情况下,您可以使用一对新值更新列表条目。valnewPair=oldPair.copy(fir

c++ - std::for_each 实现的限制

在C++标准的§25.2.4.2(std::for_each)中:templateFunctionfor_each(InputIteratorfirst,InputIteratorlast,Functionf);Effects:Appliesftotheresultofdereferencingeveryiteratorintherange[first,last),startingfromfirstandproceedingtolast-1.这是否意味着f按顺序应用于容器的元素?如果是,parallelmodeoflibstdc++违反了吗?如果不是,为什么§6.5.4中基于范围的fo

c++ - 为什么 map 上的 std::for_each 会调用复制构造函数?

这个问题在这里已经有了答案:unexpectedcopieswithforeachoveramap(3个答案)关闭8年前。我有以下简单示例,其中我想对不可复制的对象集合调用std::for_each:classA{public:A():x(0){}A(constA&)=delete;private:intx;};voidfunc(){std::vectorv(10);std::mapm;//worksasexpectedstd::for_each(begin(v),end(v),[](constA&a){/*donothing*/});//errorcallingcopyconstru

kotlin - 如何命名 Pair 的组件

鉴于Pairvalcoordinates=Pair(2,3),是否可以命名每个值,以便我可以执行类似coordinates.x之类的操作来返回2?还是coordinates.first是访问第一个值的唯一方法? 最佳答案 不支持。您应该为此目的编写一个包装器(数据)类,或者您可以使用Kotlin解构声明:val(x,y)=coordinatesprintln("$x;$y")查看更多here. 关于kotlin-如何命名Pair的组件,我们在StackOverflow上找到一个类似的问题

kotlin - 如何命名 Pair 的组件

鉴于Pairvalcoordinates=Pair(2,3),是否可以命名每个值,以便我可以执行类似coordinates.x之类的操作来返回2?还是coordinates.first是访问第一个值的唯一方法? 最佳答案 不支持。您应该为此目的编写一个包装器(数据)类,或者您可以使用Kotlin解构声明:val(x,y)=coordinatesprintln("$x;$y")查看更多here. 关于kotlin-如何命名Pair的组件,我们在StackOverflow上找到一个类似的问题

c++ - 使用 for_each 计算 vector 中每个元素的平方和

作为for_each接受的功能只接受一个参数(vector的元素),我必须在某处定义一个staticintsum=0以便可以访问它在调用for_each之后。我觉得这很尴尬。有没有更好的方法(仍然使用for_each)?#include#include#includeusingnamespacestd;staticintsum=0;voidadd_f(inti){sum+=i*i;}voidtest_using_for_each(){intarr[]={1,2,3,4};vectora(arr,arr+sizeof(arr)/sizeof(arr[0]));for_each(a.beg

c++ - 排除使用显式构造的 std::pair 构造函数

从thisanswer开始,似乎这些构造函数:templatepair(pair&&p);templatepair(constpair&p);在需要显式转换时禁止参与重载决策。来自C++11(§20.3.2,n3290):Remark:ThisconstructorshallnotparticipateinoverloadresolutionunlessUisimplicitlyconvertibletofirst_typeandVisimplicitlyconvertibletosecond_type.一个有趣的SFINAEworkaround已被建议,但这偏离了标准的文本。如果没有

c++ - 在 set<pair>> 中查找具有特定第一个坐标的任何元素

我正在尝试解决以下问题。假设我在C++中有以下容器:std::set>my_container;这个集合(字典)是按照顺序排序的在std::pair,这是字典顺序。我的任务是在my_container中找到任何元素其第一个坐标等于x,并将迭代器返回给它。显然,我不想使用find_if,因为我需要在对数时间内解决这个问题。如果有任何关于如何做到这一点的建议,我将不胜感激 最佳答案 您可以使用lower_bound为此:autoit=my_container.lower_bound(std::make_pair(x,std::numer