代码之家  ›  专栏  ›  技术社区  ›  crazy8

AWS MySQL RDS副本磁盘空间突然不足

  •  -1
  • crazy8  · 技术社区  · 6 年前

    我试着设置数字索引,但是大约是1,5,6,10。所以我想看看这些索引是否已经存在,它们是否只是增加了另一个计数器。

    我通常使用php,但我正试图用c++来实现这一点,所以基本上我想问是否有一种isset()方法可以与c一起使用++

    附言:矢量会更容易吗?如果是的话,谁能给我介绍一个好的矢量教程?谢谢

    0 回复  |  直到 17 年前
        1
  •  8
  •   user23167    17 年前

    在C++中,当声明数组时,数组的大小是固定的,而当您可以访问声明的数组大小的末尾时,这是非常危险的,也是难以追踪的bug的来源:

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

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

    #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;
    }
    

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

        2
  •  3
  •   mdec    17 年前

    我个人投票赞成使用向量。它们会动态调整大小,只要你不做傻事(比如尝试访问一个不存在的元素),它们的使用就非常友好。

    至于教程,我能给你指出的最好的东西是 google search

        3
  •  2
  •   MukeshD    10 年前

    要在没有向量的情况下执行此操作,只需将要访问的索引与数组的大小进行交叉检查。比如: if(index < array_size) 它是无效索引。

    sizeof 接线员。

    例如:

    int arr[] = {5, 6, 7, 8, 9, 10, 1, 2, 3};
    int arr_size = sizeof(arr)/sizeof(arr[0]);
    
        4
  •  1
  •   Steve    17 年前

    听起来好像真的有一张地图最接近你想要的东西。可以使用STL(标准模板库)中的Map类( http://www.cppreference.com/wiki/stl/map/start

    地图提供了一个可以被键引用的对象的容器(“索引”)。