void
  fastnc_detector<A>::new_particles(F& feature, PS& pset, const cpu&)
  {
    SCOPE_PROF(fastnc_new_particles_detector);
    memset(new_points_, 0);
    typename PS::kernel_type pset_ = pset;
    mt_apply2d(sizeof(i_float1), saliency_.domain() - border(8),
               [this, &feature, &pset_] (i_int2 p)
               {
                 if (pset_.has(p)) return;
                 if (saliency_(p) == 0) return;

                 for (int i = 0; i < 8; i++)
                 {
                   i_int2 n(p + i_int2(c8_h[i]));
                   if (saliency_(p) < saliency_(n) || pset_.has(n))
                     return;
                 }

                 new_points_(p) = p;
               }, cpu());

    st_apply2d(sizeof(i_float1), saliency_.domain() - border(8),
               [this, &feature, &pset] (i_int2 p)
               {
                 if (new_points_(p) != i_short2(0,0)) pset.add(p, feature(p));
               }, cpu());

  }
  void
  dense_detector::new_particles(const F& feature, PS& pset_)
  {
    SCOPE_PROF(mdfl_new_particles_detector);
    typename PS::kernel_type pset = pset_;
    st_apply2d(sizeof(i_float1), feature.domain() - border(0),
               [this, &feature, &pset, &pset_] (i_int2 p)
               {
                 if (!pset.has(p))
									 pset_.add(p, feature(p));
               }, cpu());
  }
int main()
        {
                Person person[5]={
                        {"aa",19},{"bb",20},{"cc",23},{"dd",21},{"ee",25}
                };
                PS ps;
                for(int i=0;i<5;++i){
                        ps.add(person+i);
                }
                while(1){
                        ps->show();
                        //ps.operator->()->show();
                        if(!(++ps))break;
                }
                return 0;
        }