对局部数组中的元素进行计数
Counting the elements in a local array
我有一个没有元素的double x[12]
。当系统提示时,用户输入一个号码,该号码存储在x
中。
我想让程序首先检查x
是否为空,如果是,把用户的输入放在x[0]
中,如果不是,把用户的输入放在下一个自由索引中。
我已经这样做了:
...
double x[12];
void AddPayment(double Amount)
{
int i = sizeof(x);
x[i] = Amount;
}
是sizeof()不与数组工作,有更好的方法做到这一点吗?
当sizeof
应用于数组时,它不会告诉你该数组保存了多少数据;它告诉您数组可以保存多少数据。您没有指定要放入double x[12]
中的任何数据,这一事实对数组的大小没有影响。因此,sizeof
将返回在您的系统中保存一个由12个double
组成的数组所需的字节数。
如果您想记录12项中有多少项被分配,请为其添加一个单独的变量。将其初始化为0,并使用它来跟踪已插入的项的数量:
size_t x_count = 0;
double x[12];
void AddPayment(double Amount) {
if (x_count == 12) {
// Error; we cannot add more than 12 items.
// Tell the user what's going on and quit,
// or handle the error in some other way.
cerr << "Cannot add more than 12 elements to x[]" << endl;
return;
}
x[x_count++] = Amount;
}
无论x[12]是否有值,它的大小始终为12 * sizeof(double)。
因此,使用sizeof()运算符并不是达到目的的好方法。
最好的方法是将x[12]初始化为用户无法输入的值,例如0,然后测试数组中第一个可以输入该值的位置为0。
double x[12] = { 0 };
void AddPayment(double Amount)
{
for (int i = 0; i < 12; i++) {
if (x[i] == 0) {
x[i] = Amount;
break;
}
}
}
我有一个没有元素的
double x[12]
。
那是一种误解。double x[12];
创建了12个double
元素,使它们的值处于未定义状态。所以你有12个未初始化的元素。这与没有元素是完全不同的。
(例如,如果您有一个类型为std::string
的数组,则误解会变得更加明显。与double
不同,std::string
总是初始化为一个定义值,一个空字符串。所以std::string x[12]
肯定是12个字符串,而不是一个空数组。)
当系统提示时,用户输入一个号码,该号码存储在
x
.我希望程序首先检查
x
是否为空,如果是,则将用户的输入在x[0]
中,如果不是,则将用户的输入放在next中自由指数。
我真的很惊讶没有人建议这样做,但是对于你想要完成的任务来说,数组是错误的工具。您需要一个可以生长的容器。你需要std::vector
:
std::vector<double> x; // starts off empty
void AddPayment(double Amount)
{
x.push_back(Amount); // grows by 1 element
}
std::vector
也有一个size()
成员函数来告诉您当前元素的数量。不再需要sizeof
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- C++如何通过用户输入删除列表元素
- lower_bound()返回最后一个元素
- 基于多个条件处理地图中的所有元素
- 调整大小后指向元素值的指针unordered_map有效?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 使用函数"remove"删除重复元素
- 具有最大子序列大小的序列,每个元素都相同
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将元素添加到数组的线程安全函数?
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 我想访问std::unique_ptr中的一个特定元素
- 如何通过 getter 函数删除矢量的元素?
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 如何制作一个集合,其中元素使用局部变量进行排序
- 对局部数组中的元素进行计数