本文整理汇总了C++中SymbolMap::map_func方法的典型用法代码示例。如果您正苦于以下问题:C++ SymbolMap::map_func方法的具体用法?C++ SymbolMap::map_func怎么用?C++ SymbolMap::map_func使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SymbolMap
的用法示例。
在下文中一共展示了SymbolMap::map_func方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: expand_wavefront
//==================================
// Update CodeTree
//==================================
void SpineDecoder::expand_wavefront(vector<int> sym_spine){
/* 变量的定义和初始化是按照变量的用途分类的 */
int edge_metric = 0;
int distance = 0;
RNG rng;
SymbolMap mapper;
uint8_t node_symbol = 0;
vector<CodeTreeNode> wavefront = this->wavefront;
vector<CodeTreeNode> new_wavefront;
/* 数组 wavefront 中的每一个元素对应 spine_t 的一个节点 */
vector<CodeTreeNode>::iterator iwave = wavefront.begin();
/* 创建树的过程是一层一层的创建,使用 vector 添加或删除节点时,实现起来比较方便 */
while(iwave != wavefront.end()){
for(int edge=0; edge!=(1<<(this->k)); ++edge){//edge 也就是 mt,这个循环用来遍历可能出现的 k-bit m.
CodeTreeNode new_node;
/* 1. update spine_value */
new_node.spine_value = hash_func(iwave->spine_value, edge);
rng = RNG(new_node.spine_value);
for(int i=0; i!=this->L; ++i){
node_symbol = mapper.map_func(rng.next());
distance = sym_spine[i] - node_symbol;
edge_metric = distance * distance;
}//end for
/* 2.update path_metric */
new_node.path_metric = iwave->path_metric + edge_metric;
/* 3.update path */
new_node.path = iwave->path;
new_node.path.push_back(edge);
/* Finaly, update wavefront */
new_wavefront.push_back(new_node);
}//end for
++iwave;
}//end while
this->wavefront = new_wavefront;
if(!wavefront.empty())
wavefront.clear();
if(!new_wavefront.empty())
new_wavefront.clear();
}