библиотека для матриц в с ++ - PullRequest
1 голос
/ 27 июля 2010

У меня много элементов в матрице, и когда я обращаюсь к ним вручную, требуется довольно много времени, чтобы устранить все ошибки, возникающие из-за неправильной индексации ... Есть ли подходящая библиотека, которая может отслеживать, например, соседей,нумерация, если элемент находится на внешнем крае или нет и т. д.

например,

VA=
11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44

Теперь я хотел бы написать функцию, которая говорит что-то вроде

for every Neighbor to element at index 12(which would be 41)
 do something

Я бы хотел, чтобы это распознавало элементы только с индексами 8 (31) и 13 (42).

Сейчас я использую векторы (vector<vector<int>>V;), но код получаетдовольно сложно и неуклюже писать и читать, так как у меня есть эти раздражающие операторы if в каждой функции.пример:

     for (int i=0;i<MatrixSIZE;i++)
        if ((i+1)%rowSize!=0){//check that it's not in the outer edge.
    //Do something
}

Какой подход вы бы предложили?Может ли boost :: MultiArray помочь мне в этом?Есть ли другие подобные?

UPDATE :: Так что я больше ищу шаблон, который может легко получить доступ к элементам, чем шаблон, который может делать матричные арифметики.

Ответы [ 4 ]

1 голос
/ 27 июля 2010

Попробуйте LAPACK , пакет линейной алгебры.

0 голосов
/ 27 июля 2010

Это может вдохновить вас:

Матричные классы в c ++

0 голосов
/ 27 июля 2010

Используется ли он в более крупной программе? Если нет, то он будет более приспособлен для использования R для работы с матрицами.

Если это более крупная программа, вы можете использовать библиотеку, например MTL .

0 голосов
/ 27 июля 2010

Есть такое: http://osl.iu.edu/research/mtl/

или это: http://www.robertnz.net/nm_intro.htm

Если немного погуглить, то для C ++ есть немало библиотек матриц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...