Обратите внимание, что также можно использовать boost.ublas для матричного создания и управления и также boost.graph, чтобы представить и управлять графиками различными способами, а также алгоритмами использования на них, и т.д.
Редактирование : Так или иначе выполнение версии проверки принадлежности к диапазону вектора в Ваших целях не является твердой вещью:
template
class BoundsMatrix
{
std::vector inner_;
unsigned int dimx_, dimy_;
public:
BoundsMatrix (unsigned int dimx, unsigned int dimy)
: dimx_ (dimx), dimy_ (dimy)
{
inner_.resize (dimx_*dimy_);
}
T& operator()(unsigned int x, unsigned int y)
{
if (x >= dimx_ || y>= dimy_)
throw std::out_of_range("matrix indices out of range"); // ouch
return inner_[dimx_*y + x];
}
};
Примечание, что необходимо было бы также добавить версию константы операторов, и/или итераторы и странное использование исключений, но Вы получаете идею.
Метод запроса возвращает объект NodeList.
В ссылке на NodeList вы можете найти список функций, которые можно применить к списку элементов. Для этого списка нет функции innerHTML, но функция html должна работать.
В HTML нет элемента «output», возможно, вы пытаетесь нацелить элементы с именем класса «output»?
dojo.query(".output").html(data)
Или элемент с id "output"?
dojo.query("#output").html(data)
Как было сказано выше, метод запроса возвращает объект NodeList, поэтому вы можете перебирать его результат в виде массива или использовать методы dojo, которые работают с NodeList (например, attr):
dojo.query("#divOutput").attr("innerHTML", data);
Но как только вы пытаетесь запросить узлы по идентификатору, было бы лучше использовать метод dojo.byId (), который возвращает domNode:
dojo.byId("divOutput").innerHTML = data;
Или в более стиле dojo:
dojo.attr(dojo.byId("divOutput"), "innerHTML", data)
Также существует оболочка dojox.jq (в разработке, входит в 1.4), которая эмулирует API возвращаемого объекта JQuery
Если вы хотите заменить все содержимое тегов вывода одним и тем же, тогда этот код всегда должен работать:
// replace the contents of ALL <output> tags
dojo.query('output').forEach(function(node) { node.innerHTML = data; });
Dojo также предоставляет небольшой ярлык для этих виды вещей. Вы можете указать строку для функции forEach в NodeList следующим образом:
// replace the contents of ALL <output> tags (as long as data is global)
dojo.query('output').forEach("item.innerHTML = data;");
Слово элемент в строке является особенным. (Отладка затруднительна, так что, возможно, она того не стоит.)