Двумерная матрица с помощью вектора

Можно только сделать это, если Вы соединяетесь с сервером DNS для домена - и, AXFR включен для Вашего IP-адреса. Это - механизм что вторичное системное использование для загрузки зоны из основного устройства. В былые времена это не было ограничено, но из-за проблем безопасности, самые основные серверы имен имеют белый список: вторичные серверы имен + пара специальных систем.

, Если сервер имен Вы используете, позволяет это тогда, можно использовать, роют или nslookup.

, Например:

#nslookup

>ls domain.com

ПРИМЕЧАНИЕ: потому что nslookup удерживается от использования для, роют и другие newere инструменты, некоторые версии nslookup не поддерживают "ls", прежде всего комплектная версия Mac OS X.

22
задан Curious 7 December 2017 в 10:13
поделиться

4 ответа

Ваш вектор пуст. Таким образом, вы не можете использовать [0][0].

Вот как вы его объявляете:

a.push_back(vector<point>());
a[0].push_back(p);

Если вы знаете, сколько элементов у вас будет с самого начала, вы можете сделать:

vector<vector<point> > a(10, vector<point>(10));

Это вектор, содержащий 10 векторов, содержащих 10 баллов. Тогда вы можете использовать

a[4][4] = p;

Однако я считаю, что использование вектора векторов сбивает с толку. Если вам нужен массив, рассмотрите возможность использования uBLAS http://www.boost.org/doc/libs/1_41_0/libs/numeric/ublas/doc/index.htm

#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>

int main () {
    using namespace boost::numeric::ublas;
    matrix<double> m (3, 3);
    for (unsigned i = 0; i < m.size1 (); ++ i)
        for (unsigned j = 0; j < m.size2 (); ++ j)
            m (i, j) = 3 * i + j;
    std::cout << m << std::endl;
}
48
ответ дан 29 November 2019 в 03:37
поделиться

Вот еще одно предложение. То, что вы пытаетесь достичь, было сделано раньше и может быть найдено в Boost Multi-Array .

12
ответ дан 29 November 2019 в 03:37
поделиться

Вы построили вектор векторов, который является пустым, и попытались разыменовать первый элемент, не добавляя к нему никаких элементов.

Векторы не работают как (некоторые) ассоциативные массивы , где попытка доступа к отсутствующему значению добавит его в коллекцию. Прежде чем пытаться получить к ним доступ с помощью соответствующей формы конструктора вектора или с помощью push_back, необходимо убедиться, что в векторах имеется соответствующее количество записей.

7
ответ дан 29 November 2019 в 03:37
поделиться

Вы просто создаете свой 2D-массив. Проблема в том, что когда вы его создаете, это пустой массив - он еще не содержит точек. Вы пытаетесь использовать точку в [0] [0], прежде чем вы действительно создадите там точку. Как обычно, чтобы поместить новый элемент в вектор, вы используете resize () , чтобы установить размер вектора, или push_back () , чтобы добавлять элементы по одному. В этом случае последнее, вероятно, будет немного неуклюжим - поскольку у вас есть вектор векторов точек, вам нужно создать вектор точки, вставить точку в этот вектор, а затем поместить этот вектор в свой массив.

3
ответ дан 29 November 2019 в 03:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: