gpt4 book ai didi

c++ - 检查数组索引是否存在

转载 作者:太空狗 更新时间:2023-10-29 19:45:12 26 4
gpt4 key购买 nike

有什么方法可以检查给定的数组索引是否存在?我正在尝试设置数字索引,但类似于 1、5、6、10。所以我想看看这些索引是否已经存在,以及它们是否只是增加了另一个计数器。

我通常使用 php,但我试图在 c++ 中执行此操作,所以基本上我想问一下是否有 isset() 方法可用于 c++

PS:使用 vector 会更容易吗?如果是这样,谁能给我指出一个好的 vector 教程?谢谢

最佳答案

在 C++ 中,数组的大小在声明时是固定的,虽然您可以访问已声明数组大小的末尾,但这是非常危险的,并且是难以追踪错误的来源:

int i[10];
i[10] = 2; // Legal but very dangerous! Writing on memory you don't know about

您似乎想要类似数组的行为,但没有填充所有元素。传统上,这是在哈希表领域。 vector 在这里不是一个很好的解决方案,因为你会有空元素占用空间,更好的是像 map 这样的东西,你可以通过搜索元素并解释结果来测试元素是否存在:

#include <map>
#include <string>

// Declare the map - integer keys, string values
std::map<int, std::string> a;

// Add an item at an arbitrary location
a[2] = std::string("A string");

// Find a key that isn't present
if(a.find(1) == a.end())
{
// This code will be run in this example
std::cout << "Not found" << std::endl;
}
else
{
std::cout << "Found" << std::endl;
}

一个警告:使用上面的方法来查找键是否存在,而不是像测试默认值这样的方法

if(a[2] == 0)
{
a[2] = myValueToPutIn;
}

因为映射的行为是在第一次访问该键值时插入一个默认构造的对象,如果当前不存在的话。

关于c++ - 检查数组索引是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/256807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com