Use unordered_map instead of map
This commit is contained in:
parent
dfa3eabc47
commit
1564e18c4a
4 changed files with 7 additions and 6 deletions
|
|
@ -37,11 +37,11 @@ void MarkovMatrix::reset(int length)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::map<std::string, int> MarkovMatrix::hiccup(std::string& previous)
|
std::unordered_map<std::string, int> MarkovMatrix::hiccup(std::string& previous)
|
||||||
{
|
{
|
||||||
int size = previous.size();
|
int size = previous.size();
|
||||||
int pos = std::max(size-this->length, 0);
|
int pos = std::max(size-this->length, 0);
|
||||||
int len = size - pos;
|
int len = size - pos;
|
||||||
std::string before = previous.substr(pos, len);
|
std::string before = previous.substr(pos, len);
|
||||||
return this->matrix[before];
|
return this->matrix.at(before);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef MARKOVMATRIX_HPP
|
#ifndef MARKOVMATRIX_HPP
|
||||||
#define MARKOVMATRIX_HPP
|
#define MARKOVMATRIX_HPP
|
||||||
|
|
||||||
#include <map>
|
#include <unordered_map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -13,11 +13,11 @@ public:
|
||||||
|
|
||||||
void feed(std::string& line);
|
void feed(std::string& line);
|
||||||
void reset(int length=0); // reset the matrix, length>0 -> set a new length
|
void reset(int length=0); // reset the matrix, length>0 -> set a new length
|
||||||
std::map<std::string, int> hiccup(std::string& previous);
|
std::unordered_map<std::string, int> hiccup(std::string& previous);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int length;
|
int length;
|
||||||
std::map<std::string, std::map<std::string, int> > matrix;
|
std::unordered_map<std::string, std::unordered_map<std::string, int> > matrix;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ std::string SimpleMarkov::regurgitateLine(std::string start)
|
||||||
std::string next = "";
|
std::string next = "";
|
||||||
do {
|
do {
|
||||||
// get the possible next characters from the matrix
|
// get the possible next characters from the matrix
|
||||||
std::map<std::string, int> possibles = this->matrix.hiccup(line);
|
std::unordered_map<std::string, int> possibles = this->matrix.hiccup(line);
|
||||||
|
|
||||||
// calculate sum of all possibilities
|
// calculate sum of all possibilities
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "SimpleMarkov.hpp"
|
#include "SimpleMarkov.hpp"
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
if (argc > 5 || argc < 3) {
|
if (argc > 5 || argc < 3) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue