【发布时间】:2012-01-15 16:48:39
【问题描述】:
我正在尝试实现一个程序,它为您提供具有确定的开始、结束和基础的序列,问题是我无法确定元素的数量
这是我的简单算术级数生成器代码
float Arithmetic_squence[](float start, float end, float b) {
float result[];
float last_number = start;
while (last_number <= (end - b)) {
result[sizeof(result)] = last_number;
last_number += b;
}
}
它不会编译,因为它需要一个大小
我也希望代码尽可能简单,所以我希望我不必实现一个低效、耗时的链表
我也不知道如何处理向量,也许如果有一个快速指南我可以使用它
【问题讨论】:
-
关于快速指南,(提示)google "c++ vector" -> 第一个结果是cplusplus.com/reference/stl/vector
-
¤ 其他人已经提到了
std::vector。如果你真的需要一个数组,那将是一个不错的选择。但是,数组很少是表示算术序列的好选择。例如,rand函数是一个函数,而不是一个数组。而是定义一个具有计算序列中下一个数字所需的信息的对象,并让它提供一个成员函数next。您也可以或选择将其表示为 C++ 前向迭代器,但我认为如果需要,使用适配器会更好。所以,有状态的对象,而不是数组。干杯&hth., -
Alf,这对于专业编码人员来说是个好主意,但对于新手来说可能有点极端......
-
@StilesCrisis:它不适合专业编码人员,也不是“高级”。虽然我敢肯定,如果微软的用户界面人员被允许使用它,他们会将其标记为“高级”。他们甚至将编辑环境变量(在系统小程序中)的按钮标记为“高级”。我们达到了甚至放屁都是“高级”的地步,仅适用于专业美食家。我认为这很愚蠢。 :-) 干杯,
-
@StilesCrisis 我不能同意。如果它最终是好的,为什么新手学习不好的模式然后让他们重新学习?我的经验是,让一个人摆脱坏习惯比从一开始就教书更难。这就是为什么我喜欢“加速 C++”作为学习材料的原因:它避免了在 C++ 之前教 C 的常见模式,以及让坏习惯爬进来