- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试将匿名结构传递给 std::count_if,但编译失败。
当我尝试编译时(使用 g++ 4.5.3,不使用 c++03 或 c++11 扩展),我在 fail()
方法中遇到错误,但是pass()
方法没有那个错误。
In function ‘void fail()’:
Test.cpp:34:24: error: no matching function for call to ‘count_if(std::map<int, int>::iterator, std::map<int, int>::iterator, fail()::<anonymous struct>&)’
如果我将结构设为命名结构,我会遇到类似的错误。我不明白为什么在函数外部和内部声明它应该有所不同。我错过了什么?
#include <map>
#include <algorithm>
typedef std::map<int, int> Map;
void fail()
{
struct {
bool operator()(Map::value_type const& value)
{
return value.second > 0;
}
} checker;
Map map;
std::count_if(map.begin(),
map.end(),
checker);
}
struct Checker {
bool operator()(Map::value_type const& value)
{
return value.second > 0;
}
};
void pass()
{
Map map;
Checker checker;
std::count_if(map.begin(),
map.end(),
checker);
}
最佳答案
根据 C++03 规范,不允许使用本地类型作为模板参数。 2011 年 C++ 修订版取消了此限制。
限制的基本原因是担心为本地类型创建唯一名称。但是,开发了一些技术来创建适用于所有系统的唯一名称。
关于c++ - 将本地结构传递给 count_if,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20804864/
示例我有一个具有整数值的 vector ,我想计算该 vector 中没有指定我自己的运行时输入的元素。exam vector 有元素 10 , 20 ,30,40在运行时我接受输入 k;并且想要计算
我正在尝试将匿名结构传递给 std::count_if,但编译失败。 当我尝试编译时(使用 g++ 4.5.3,不使用 c++03 或 c++11 扩展),我在 fail() 方法中遇到错误,但是pa
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我尝试使用 lambda 表达式和 count_if() 在 vector 中查找相同的字符串值,但没有成功。错误信息是: variable 'str' cannot be implicitly ca
我尝试使用 lambda 表达式和 count_if() 在 vector 中查找相同的字符串值,但没有成功。错误信息是: variable 'str' cannot be implicitly ca
考虑下面的代码,其目的是重载 std::count_if() 以使用容器作为参数而不是像往常一样使用输入和输出迭代器。 // overload for call with predicate temp
我创建了一个函数,给定某种类型 T 的列表和一个谓词(指向指定函数的指针),计算列表中有多少元素返回 true。 这适用于原子谓词(isEven、isOdd、is_less_than_42),但如果我
为了重温我的 C++,我从网络搜索中找到了一个我需要的辅助函数,并在 C++ 引用资料中查找之前试用了它: int count_vowels(const std::string &input) {
我有一个带有名称和编号的结构: struct S { string name; int number; }; S 的对象存储在 vector 中。 vector 根据 name 排序。可能有超
我目前正在尝试使用 lambda 函数来 std::count_if 数组中两个连续元素的总和等于一个数字。下面给出了示例代码。 #include #include #include int m
我正在尝试使用 C++ 的 count_if 函数来查看 std::string 中有多少个十六进制数字。当我尝试以下操作时: string s = "123abc"; cout ,C++ 等效 h
我正在运行一个简单的 STL 算法来计算小于 50 的元素的数量。该程序生成错误“调用的对象类型‘int’不是函数或函数指针”。我整晚都在解决这个问题,并在没有成功的情况下寻找关于 stackover
我正在使用 STL 函数 count_if 来计算所有正值在 double vector 中。例如我的代码是这样的: vector Array(1,1.0) Array.push_back(-1.
我有一个 double 类型的多维数组( double someArray[10][20] )。我想: a) 使用 std::count_if()迭代该数组的单个列,返回大于某个数字的值的数量 b)
我正在使用 expss::count_if。 虽然像这样的东西工作正常(即,只计算值等于“1”的值): (number_unemployed = count_if("1",unemployed_fie
我想实现 RANSAC。我生成了 60k 点和 500 个平面,我想为每个平面计算它们附近有多少点。然后选择具有最大值的那个。 生成 vector (d_vec) 和平面 (d_pl) 并将它们传输到
对于一项任务,我正在做一些简单的数据采样以确定哪些样本包含计算能量总数的音频。我一直在研究 std::count_if 函数,虽然这在一定程度上符合我的需要,例如: int foo = std::co
这个问题在这里已经有了答案: Why does the C++ standard algorithm "count" return a difference_type instead of size
这是 gcc std::count_if 代码 template typename iterator_traits::difference_type count_if(_InputIterat
我需要计算数字范围在 vector 中出现的频率 比如我想知道2,3,4在下面的 vector vec中出现了多少次。 std::vector vec = {0,3,1,3,2,4,0,1,3,4,2
我是一名优秀的程序员,十分优秀!