ошибка: ‘поддиапазон’ не является членом ‘boost :: numeric:: ublas’

#c #boost

#c #boost

Вопрос:

Я пытаюсь учиться boost::ublas , но у меня возникли некоторые проблемы с компиляцией кода с subrange помощью функции. Как обычно, документы boost, похоже, на самом деле не проливают свет на это. Вот что я сделал:

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

void DoNothing()
{
    boost::numeric::ublas::matrix<double> a(1,2);
    boost::numeric::ublas::subrange(a,boost::numeric::ublas::range(0,1),boost::numeric::ublas:range(0,2));
}
  

Вот сообщение об ошибке, которое я получаю:

test.cpp:14:5: ошибка: ‘поддиапазон’ не является членом ‘boost :: numeric:: ublas’ boost:: numeric:: ublas:: поддиапазон (a, boost :: numeric:: ublas:: диапазон (0,1), boost:: numeric::ublas:: range (0,2)); ^

Я предполагаю, что я не включил файл заголовка, который мне нужен, но я прочитал документацию (http://www.boost.org/doc/libs/1_52_0/libs/numeric/ublas/doc/operations_overview.htm ) но не вижу ничего, что подсказывало бы, какой заголовок, если таковой имеется, мне нужно добавить, чтобы заставить это работать.

Ответ №1:

 #include <boost/numeric/ublas/matrix_proxy.hpp>
  

Комментарии:

1. @Jason какую версию boost вы используете?

2. Ах, нет, неважно, что это работает, ошибка изменилась на no matching function for... потому, что я использую неправильные типы, но, похоже, она нашла функцию. Спасибо 🙂

3. И, по-видимому, ему нужно использовать boost::numeric::ublas::subrange(a, 0,1 , 0,2); . Похоже, что функция, которая делает то же самое с диапазонами project .

4. Кстати, могу я спросить, как вы узнали, что это #include то, что вам нужно? Я не смог найти его в документах…