本文整理汇总了C++中std::list::crbegin方法的典型用法代码示例。如果您正苦于以下问题:C++ list::crbegin方法的具体用法?C++ list::crbegin怎么用?C++ list::crbegin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类std::list
的用法示例。
在下文中一共展示了list::crbegin方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: lqr
static std::list<Eigen::Matrix<double,4,12> > lqr(System const & sys, double dt, std::list<State> const & list_state, std::list<U> const & list_u, Mat12 Q, Mat4 Ru, Mat12 Qf)
{
std::list<Eigen::Matrix<double,4,12> > list_K;
std::list<State>::const_reverse_iterator rit_state=list_state.crbegin();
std::list<U>::const_reverse_iterator rit_u=list_u.crbegin();
rit_state++;
Mat4 MF=(Mat4()<< 0, sys.kt*sys.d, 0, -sys.kt*sys.d,
-sys.kt*sys.d, 0, sys.kt*sys.d, 0,
sys.km, -sys.km, sys.km, -sys.km,
sys.kt, sys.kt, sys.kt, sys.kt).finished();
Mat12 P=Qf;
while(rit_state!=list_state.crend())
{
Vec4 u1=*rit_u;
Vec4 u2=u1.cwiseProduct(u1);
Mat3 R=rit_state->g.block(0,0,3,3);
Vec3 omega=rit_state->v.head(3);
Mat3 Ad=SO3::exp(-omega*dt);
double f=(u2(0)+u2(1)+u2(2)+u2(3))*sys.kt;
Mat12 A=Mat12::Zero();
A.block(0,6,6,6)=Mat6::Identity();
A.block(6,6,3,3)=sys.I_inv*(SO3::hat(sys.I*omega)-SO3::hat(omega)*sys.I);
A.block(9,0,3,3)=-f*R*SO3::E[2]/sys.m;
A.block(0,6,3,6)=SO3::dexp(omega*dt)*A.block(0,6,3,6);
A=Mat12::Identity()+A*dt;
A.block(0,0,3,12)=SO3::exp(-omega*dt)*A.block(0,0,3,12);
Eigen::Matrix<double,12,4> B=Eigen::Matrix<double,12,4>::Zero();
B.block(6,0,3,3)=sys.I_inv;
B.block(9,3,3,1)=R.col(2)/sys.m;
B=B*MF*(2*u1).asDiagonal();
B=B*dt;
Eigen::Matrix<double,4,12> K=(Ru+B.transpose()*P*B).inverse()*B.transpose()*P*A;
P=K.transpose()*Ru*K+Q+(A-B*K).transpose()*P*(A-B*K);
list_K.push_front(K);
rit_state++;
rit_u++;
}
return list_K;
}
示例2: PopTag
void CRealTextParser::PopTag(std::list<Tag>& p_rlistTags, const std::wstring& p_crszTagName)
{
for (auto riter = p_rlistTags.crbegin(); riter != p_rlistTags.crend(); ++riter) {
if (riter->m_szName == p_crszTagName) {
p_rlistTags.erase((++riter).base());
return;
}
}
}
示例3: updateVisibleWidgetsList
void ofxWidget::updateVisibleWidgetsList() {
if (!ofxWidget::bVisibleListDirty)
return;
//ofLogNotice() << "vList Update cache miss";
// build a list of visible widgets based on all widgets
// TODO: only rebuild this list if visiblility list on adding/removing and
// parenting widgets, and on changing widget visiblity, of course.
sVisibleWidgets.clear();
for (auto it = sAllWidgets.crbegin(); it != sAllWidgets.crend(); ++it) {
if (auto p = it->lock()) {
if (p->mVisible) {
sVisibleWidgets.emplace_front(*it);
} else {
std::advance(it, p->mNumChildren);
}
}
}
ofxWidget::bVisibleListDirty = false;
}