Ответы пользователя по тегу D
  • КАК в D или d C++ проверить наличие элемента array[3][4] ?

    Rio
    @Rio
    Смотря что значит "наличие элемента в массиве". Если массив статический, то элемент там всегда наличествует. А если динамический, то в D можно проверить что такие индексы существуют, вот так например:

    auto array = new int[10][20];
    
    /* ... */
    
    writeln(array.length);  // напишет 20
    writeln(array[0].length); // напишет 10
    
    // проверим, что есть элемент [3][4]
    if ((array.length < 4) || (array[0].length < 3))
    	writeln("fail"); // а вот это не напишет, значит элемент [3][4] доступен.


    Ещё можно явно отлавливать исключение, когда читается несуществующий элемент:
    auto array = new int[10][20];
    
    /* ... */
    
    bool isElementExist(int[10][] a, size_t indexA, size_t indexB)
    {
    	try { auto i = a[indexA][indexB]; }
    	catch { return false; }
    	return true;
    }
    
    /* ... */
    
    writeln(isElementExist(array, 300, 4)); // false
    writeln(isElementExist(array, 3, 4)); // true
    Ответ написан
    Комментировать