30 lines
737 B
C++
30 lines
737 B
C++
#ifndef LM_INTERPOLATE_BACKOFF_MATRIX_H
|
|
#define LM_INTERPOLATE_BACKOFF_MATRIX_H
|
|
|
|
#include <cstddef>
|
|
#include <vector>
|
|
|
|
namespace lm { namespace interpolate {
|
|
|
|
class BackoffMatrix {
|
|
public:
|
|
BackoffMatrix(std::size_t num_models, std::size_t max_order)
|
|
: max_order_(max_order), backing_(num_models * max_order) {}
|
|
|
|
float &Backoff(std::size_t model, std::size_t order_minus_1) {
|
|
return backing_[model * max_order_ + order_minus_1];
|
|
}
|
|
|
|
float Backoff(std::size_t model, std::size_t order_minus_1) const {
|
|
return backing_[model * max_order_ + order_minus_1];
|
|
}
|
|
|
|
private:
|
|
const std::size_t max_order_;
|
|
std::vector<float> backing_;
|
|
};
|
|
|
|
}} // namespaces
|
|
|
|
#endif // LM_INTERPOLATE_BACKOFF_MATRIX_H
|