这篇文章总结了一些有趣的小程序片段,这些程序没有设计艰深的数学和算法,而是通过巧妙的构思达成目标。

01

// P 和 pose 都保存的是位姿i。P 里面先是旋转后是位置, pose 里面先是位置后是旋转
// 这个小片段展示了如何由 P 的协方差得到 pose 的协方差
for (int i = 0; i < 6; i++)
 {
    int k = i < 3 ? i + 3 : i - 3;
    pose.covariance[i * 6 + 0] = P(k, 3);
    pose.covariance[i * 6 + 1] = P(k, 4);
    pose.covariance[i * 6 + 2] = P(k, 5);
    pose.covariance[i * 6 + 3] = P(k, 0);
    pose.covariance[i * 6 + 4] = P(k, 1);
    pose.covariance[i * 6 + 5] = P(k, 2);
 }
02

运用先初始化的成员的值来初始化其它成员

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

class Base
{
 public:
  int b;
  Base(int in)
  {
    b=in;
  }
};
class func
{
 public:
  ~func(){};
  func():a(1),b(func1())
  {
  }
  int func1()
  {
    return a+1;
  }
  
  int a ;
  Base b ;
  
};

int main(int argc,char** argv)
{
  func f;
  cout << f.b.b << endl;
  return 0;
}