对于每一个奇怪的行为
for_each weird behaviour
本文关键字:每一个 更新时间:2023-10-16
我不太使用STL,我想开始学习它,所以我用STL的for_each
函数做了一个非常简单的程序。下面是整个程序(减去头文件):
class Object {
public:
int s;
Object() : s(0) { }
Object(const Object& rhs) : s(rhs.s) { }
void operator() (int a) {
s += a;
}
};
int main () {
Object sum;
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for_each(arr, arr + sizeof(arr) / sizeof(int), sum);
cout << sum.s;
cin.get();
return 0;
}
程序输出0
。我肯定是错误地使用for_each
,但这段代码到底有什么问题?
for_each
使用您提供的函子的副本,然后在最后返回一个副本。你需要这个:
sum = for_each(arr, arr + sizeof(arr) / sizeof(int), sum);
如果您只想计算总和,那么您也可以使用std::accumulate
作为:
#include <numeric>
int sum =std::accumulate(arr, arr + sizeof(arr) / sizeof(int),0);
不需要函子!
相关文章:
- 如何创建一个所有行大小不同的 2D 数组,并且用户将指定每行将有多少个元素?
- 丢失读入的每一行输入中的最后一个令牌
- 将一个向量映射到不同的对,即使向量映射到每对时是不同的?
- 对于C++中的每一个都无法更新向量
- 如何创建一个具有可变行且每行有 3 列的 2D 数组?
- 为什么这个do-while循环每隔一个循环只写入数组?
- 如何从这些语句中的每一个创建不同的函数?
- clang 格式:始终断开所有参数,每行一个
- 在C++中,系统如何将这些对象中的每一个与执行程序的窗口相关联?
- 每 1 秒(准确地)调用一个函数
- 我应该为C 中的每种类型都有一个解析器
- 在整数C 中分开每一个数字
- 找不到正确的 Qt5Core.dll 文件。我发现的每一个都会给出不同的错误
- C++-是否可以使用random_shuffle生成数组的每一个排列,一次且仅一次
- 为什么我的struct只存储最后一个字符串,而不是每一个
- 在c++中,为什么ifstream getline返回我的.txt文件中的每一个数字,而不是所有的数字
- 给定了在C++中返回对象的各种方法,这些返回语句中的每一个都有哪些潜在的问题
- 共享库和可执行文件与 Linux 上的静态 C 运行时链接.它们中的每一个都有像Windows这样的独立堆吗?
- 对于每一个奇怪的行为
- c++ Macro Magic:获取每一个宏参数,对参数计数