Если ваши 200 строк находятся в массиве, ваши 20 100 значений сходства также могут быть в одномерном массиве.Все зависит от того, как вы индексируете этот массив.Скажем, x и y - это индексы строк, для которых вы хотите подобия.Поменяйте местами x и y, если необходимо, чтобы y> = x, затем посмотрите на запись i = x + y (y + 1) / 2 в большом массиве.
(x, y) of (0,0)), (0,1), (1,1), (0,2), (1,2), (2,2), (0,3), (1,3) ... приведет вас кзапись 0,1,2,3,4,5,6,7 ...
Таким образом, это оптимально использует пространство и дает более быстрый поиск, чем карта.Я предполагаю, что эффективность, по крайней мере, слегка важна для вас, поскольку вы используете C ++!
[если вас не интересуют значения самоподобия, где y = x, тогда используйте i = x + y (y-1) / 2 вместо].