本文整理汇总了C++中pod_vector::extend方法的典型用法代码示例。如果您正苦于以下问题:C++ pod_vector::extend方法的具体用法?C++ pod_vector::extend怎么用?C++ pod_vector::extend使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pod_vector
的用法示例。
在下文中一共展示了pod_vector::extend方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: resize
/*! Change number of sets, set end, and initialize all sets as empty
If \c n_set_in is zero, any memory currently allocated for this object
is freed. Otherwise, new memory may be allocated for the sets (if needed).
\param n_set_in
is the number of sets in this vector of sets.
\param end_in
is the maximum element plus one (the minimum element is 0).
*/
void resize(size_t n_set_in, size_t end_in)
{
n_set_ = n_set_in;
end_ = end_in;
if( n_set_ == 0 )
{ data_.free();
return;
}
// now start a new vector with empty sets
Pack zero(0);
data_.erase();
n_pack_ = ( 1 + (end_ - 1) / n_bit_ );
size_t i = n_set_ * n_pack_;
if( i > 0 )
{ data_.extend(i);
while(i--)
data_[i] = zero;
}
// values that signify past end of list
next_index_ = n_set_;
next_element_ = end_;
}
示例2: resize
/*! Change number of sets, set end, and initialize all sets as empty
Any memory currently allocated for this object is freed. If both
\a n_set_in and \a end_in are non-zero new memory is allocated, otherwise
no new memory is allocated for the object.
\param n_set_in
is the number of sets in this vector of sets.
\param end_in
is the maximum element plus one (the minimum element is 0).
*/
void resize(size_t n_set_in, size_t end_in)
{ Pack zero(0);
data_.erase();
n_set_ = n_set_in;
end_ = end_in;
n_pack_ = ( 1 + (end_ - 1) / n_bit_ );
size_t i = n_set_ * n_pack_;
if( i > 0 )
{ data_.extend(i);
while(i--)
data_[i] = zero;
}
// values that signify past end of list
next_index_ = n_set_;
next_element_ = end_;
}
示例3: my_init
void my_init(vector<bool> keepcol){
Partial.extend(num_var_tape_ * 1);
arg_mark_.resize(play_.op_arg_rec_.size());
for(size_t i=0;i<arg_mark_.size();i++)arg_mark_[i]=false;
/* Run a reverse test-sweep to store pointers once */
tape_point tp;
play_.reverse_start(tp.op, tp.op_arg, tp.op_index, tp.var_index);
tp_.resize(tp.op_index+1);
var2op_.resize(tp.var_index+1);
op_mark_.resize(tp.op_index+1);
for(size_t i=0;i<op_mark_.size();i++)op_mark_[i]=0;
user_region_mark_.resize(tp.op_index+1);
for(size_t i=0;i<user_region_mark_.size();i++)user_region_mark_[i]=0;
tp_[tp.op_index]=tp;
/* 1. We need to be able to find out, for a given variable, what operator created
the variable. This is easiest done by looping through the _operators_ because for a
given op we have access to all the resulting variables it creates.
2. We precompute the a vector of "tape_points" so that instead of calling
"reverse_next", we simply get the next tape entry by tp_[i-1].
*/
while(tp.op != BeginOp ){ /* tp.op_index is decremented by one in each iteration ... */
// printTP(tp); /* For debugging */
play_.reverse_next(tp.op, tp.op_arg, tp.op_index, tp.var_index);
/* Csum is special case - see remarks in player.hpp and reverse_sweep.hpp */
if(tp.op == CSumOp)play_.reverse_csum(tp.op, tp.op_arg, tp.op_index, tp.var_index);
for(size_t i=0;i<NumRes(tp.op);i++)var2op_[tp.var_index-i]=tp.op_index;
tp_[tp.op_index]=tp;
markArgs(tp);
}
/* Lookup table: is tape_point within a UserOp region? */
bool user_within=false;
user_region_.resize(tp_.size());
for(size_t i=0;i<tp_.size();i++){
if(tp_[i].op==UserOp){
user_region_[i]=true;
user_within=!user_within;
} else {
user_region_[i]=user_within;
}
}
/* Lookup table: is tape_point a constant (=only fixed effect dependent) ? */
constant_tape_point_.resize(tp_.size());
int indep_var_number=0;
for(size_t i=0;i<tp_.size();i++){
if(tp_[i].op==InvOp){ /* All independent variables are marked according to being
random or fixed effect */
constant_tape_point_[i]=!keepcol[indep_var_number];
indep_var_number++;
} else { /* Mark operator as constant if _all_ arguments are constant */
constant_tape_point_[i] = is_tape_point_constant(i);
}
//std::cout << constant_tape_point_[i] << " "; printTP(tp_[i]);
}
// std::cout << "Total: " << constant_tape_point_.size() << "\n";
// int sum=0; for(int i=0;i<constant_tape_point_.size();i++)sum+=constant_tape_point_[i];
// std::cout << "Constant:" << sum << "\n";
// Calculate pattern
int m=Range();
colpattern.resize(m);
for(int i=0;i<m;i++)my_pattern(i);
for(size_t i=0;i<op_mark_.size();i++)op_mark_[i]=0; /* remember to reset marks */
for(size_t i=0;i<user_region_mark_.size();i++)user_region_mark_[i]=0; /* remember to reset marks */
}