c++ - C ++如何确定元素是否存在于动态分配的数组中
问题描述
假设我有一个容量为 50 的动态分配数组。
int *myArray = new int[50];
我需要编写一个 calAverage 函数来计算该数组内元素的平均值。
并非所有索引都被赋值。myArray 可能分配了 0、10 或 50 个值。我不知道分配了多少或在哪里分配了值。
所以这是我的 calAverage 函数:
int calAverage()
{int sum = 0;
int avg = 0;
for (int i=0;i<50;i++)
{
if (element i is present) {sum+=myArray[i];i++}
}
我在正确的轨道上吗?请帮我完成 calAverage 函数。
我不能使用矢量或地图,因为这是一项作业,而且是不允许的。我收到的提示是创建一个并行数组并比较两者以检查是否分配了一个元素。IDK 如何提供帮助的逻辑。
解决方案
并非所有索引都被赋值
实际上,在某些情况下,如果没有初始化或分配,它们中的一些可能具有“未指定的值”(并且读取所述值的程序将具有未定义的行为)。
所以,我们可以说这些元素“没有被赋值”。但我不会这样做,原因有两个:
- 您无法检测到这一点,并且
- 这并不意味着元素不存在。
这与您正在考虑的“尚未被赋予价值”完全不同。所以,我建议你这样想:所有数组元素都存在,总是. 您可以使用其他容器来按需添加元素,或者选择您自己的方式来指定值当前是否对您的算法“有效”。
如果您想要x不连续的x→y映射列表,也许您应该考虑 a代替(尽管这确实带来了它自己的问题,即它可能会更慢)。或者您可以使用某种标记值,例如这些值永远不会被视为“真实”值。std::map
-1
推荐阅读
- c# - 如何在 c# 中的 If-Else 条件中添加 forloop?[CODEDOM]
- javascript - UnhandledPromiseRejectionWarning:错误:已将握手入队后无法将握手入队
- visual-studio-code - 用热键选择文本代码visualstudio
- javascript - Angular 行为主题空数组
- java - 生成器类不生成类型兼容的对象 (JUnit)
- pine-script - 从最后一个真正的 BAR 只计算一次
- c++ - 是否有预处理器宏来防止其他人在 C++ 中包含私有头文件?
- python - 导入“shapecalc”无法解析(VSCODE)
- c++ - 如何有效地将数组枚举转换为映射
- android - 如何将 ByteArray 转换为字符串并在 Kotlin 中反转?