, std::map . SpareseMat, , , , std::map O(log(n)) lookup, O(log(n)) . vector ( O(n)). O(1) , O(n) . , , , , std::map .
vector , map , , ( , , , ).
hash, O(1) , , O(log(n)) - , . , , , , O(log(n)), - std::map.
. , , , , , , :
, . push_back O(1). 1 . 2:
int dot = 0;
unsigned int index_v1 = 0, index_v2 = 0;
while (index_v1 < v1.size() && index_v2 < v2.size())
if (v1[index_v1].first == v2[index_v2].first)
dot += v1[index_v1++].second * v2[index_v2++].second;
else if (v1[index_v1].first < v2[index_v2].first)
++index_v1;
else
++index_v2;
, , , , (O(log(n)) ).
, , , . , .
, - , ( ). O(n), , .
1 , O(1) O(log(n)) n ~= 500 .
2 map , . , std::map , node O(1).