• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ range类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中range的典型用法代码示例。如果您正苦于以下问题:C++ range类的具体用法?C++ range怎么用?C++ range使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了range类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: m_sigma

// The constructor uses the appropriate settings in the config file to
// properly set up the sensor model for the specified "phase" of the LGMD
// input signal.
SensorModel::SensorModel(const std::string& lgmd_phase)
   : m_sigma(0.0f), m_name(lgmd_phase)
{
   const range<float> lgmd_range =
      get_conf(locust_model(), "spike_range", make_range(0.0f, 800.0f)) ;

   // Get the LGMD ranges for the columns of the sensor model
   m_lgmd_ranges = string_to_deque<float>(
      conf<std::string>(lgmd_phase + "_lgmd_ranges", "0 800")) ;
   if (m_lgmd_ranges.size() < 2) { // crappy configuration!
      m_lgmd_ranges.clear() ;
      m_lgmd_ranges.push_back(lgmd_range.min()) ;
      m_lgmd_ranges.push_back(lgmd_range.max()) ;
   }
   sort(m_lgmd_ranges.begin(), m_lgmd_ranges.end()) ;
   if (m_lgmd_ranges.front() > lgmd_range.min())
      m_lgmd_ranges.push_front(lgmd_range.min()) ;
   if (m_lgmd_ranges.back() < lgmd_range.max())
      m_lgmd_ranges.push_back(lgmd_range.max()) ;

   // Figure out how many rows and columns the sensor model's probability
   // table has and allocate space for the required number of elements.
   // Initialize the probability table using a uniform distribution.
   const int C = m_lgmd_ranges.size() - 1 ;
   const int R = column_size() ;
   const int N = R * C ;
   m_prob.reserve(N) ;
   std::fill_n(std::back_inserter(m_prob), N, 1.0f/N) ;

   // Apply Gabbiani model to obtain causal probabilities and Gaussian
   // blur neighbouring bins in each row.
   update(clamp(conf(lgmd_phase + "_sigma", 1.0f),
                0.1f, static_cast<float>(row_size()))) ;
}
开发者ID:ulyssesrr,项目名称:carmen_lcad,代码行数:37,代码来源:LoSensorModel.C


示例2: prob_label

// Quick helper to return a label for the current range of probability
// values used for scaling the texels used to represent the sensor
// model's probabilities.
static std::string prob_label(const range<float>& prob_range)
{
    std::ostringstream str ;
    str << "P-range: ["
        << prob_range.min() << ", " << prob_range.max() << ']' ;
    return str.str() ;
}
开发者ID:ulyssesrr,项目名称:carmen_lcad,代码行数:10,代码来源:LoCalibrateLET.C


示例3: new

void MipsELFFile<ELFT>::createRelocationReferences(const Elf_Sym *symbol,
                                                   ArrayRef<uint8_t> symContent,
                                                   ArrayRef<uint8_t> secContent,
                                                   range<Elf_Rel_Iter> rels) {
  const auto value = this->getSymbolValue(symbol);
  for (Elf_Rel_Iter rit = rels.begin(), eit = rels.end(); rit != eit; ++rit) {
    if (rit->r_offset < value || value + symContent.size() <= rit->r_offset)
      continue;

    auto r = new (this->_readerStorage) MipsELFReference<ELFT>(value, *rit);
    this->addReferenceToSymbol(r, symbol);
    this->_references.push_back(r);

    auto addend = readAddend(*rit, secContent);
    auto pairRelType = getPairRelocation(*rit);
    if (pairRelType != llvm::ELF::R_MIPS_NONE) {
      addend <<= 16;
      auto mit = findMatchingRelocation(pairRelType, rit, eit);
      if (mit != eit)
        addend += int16_t(readAddend(*mit, secContent));
      else
        // FIXME (simon): Show detailed warning.
        llvm::errs() << "lld warning: cannot matching LO16 relocation\n";
    }
    this->_references.back()->setAddend(addend);
  }
}
开发者ID:martell,项目名称:lld,代码行数:27,代码来源:MipsELFFile.cpp


示例4: operator

 void operator()(const range& r) const{
     for (int i = r.begin(); i != r.end(); ++i) {
         if (compareWord(word, words[i])) {
             cout << words[i] << endl;
         }
     }
 }
开发者ID:orichalque,项目名称:M1,代码行数:7,代码来源:main.cpp


示例5: jacobi_kernel_wrapper

 void jacobi_kernel_wrapper(range const & y_range, size_t n, vector<double> & dst, vector<double> const & src) {
     for(size_t y = y_range.begin(); y < y_range.end(); ++y) {
               double * dst_ptr = &dst[y * n];
         const double * src_ptr = &src[y * n];
         jacobi_kernel( dst_ptr, src_ptr, n );
     }
 }
开发者ID:kempj,项目名称:hpxMP,代码行数:7,代码来源:jacobi_hpx.cpp


示例6: invalid_argument

double_block_type::double_block_type(const range &bounds,
                                     const offset_multiplier &ls)
    : bounds_(bounds), ls_(ls) {
  if (bounds.has_low() || bounds.has_high())
    if (ls.has_offset() || ls.has_multiplier())
      throw std::invalid_argument("Block type cannot have both a bound and"
                                  "an offset/multiplier.");
}
开发者ID:stan-dev,项目名称:stan,代码行数:8,代码来源:double_block_type_def.hpp


示例7: jacobi_kernel_wrap

 void jacobi_kernel_wrap(
     range const & r,
     crs_matrix<double> const & A,
     std::vector<double> & x_dst, std::vector<double> const & x_src, std::vector<double> const & b)
 {
     for(std::size_t row = r.begin(); row < r.end(); ++row)
     {
         jacobi_kernel_nonuniform(A, x_dst, x_src, b, row);
     }
 }
开发者ID:akemp,项目名称:hpx,代码行数:10,代码来源:jacobi_nonuniform_hpx.cpp


示例8: del

void database::del(range key)
{
    assert(_db);
    struct slice sk;

    sk.data  = const_cast<char*>(key.begin());
    sk.len = key.size();

    ::db_remove(_db, &sk);
}
开发者ID:maciekgajewski,项目名称:falcondb,代码行数:10,代码来源:database.cpp


示例9: is_mergeable

inline bool is_mergeable (const range<iter1_t> &src1,
                          const range<iter2_t> &src2, compare  comp )
{   //---------------------------- begin ------------------------------------
    typedef typename iterator_traits<iter1_t>::value_type type1 ;
    typedef typename iterator_traits<iter2_t>::value_type type2 ;

    static_assert ( std::is_same<type1, type2>::value,
                    "Incompatible iterators\n");
    //---------------------------- begin --------------------------------------
    return comp ( *(src2.front()), *(src1.back()));
};
开发者ID:fjtapia,项目名称:HPX_sort,代码行数:11,代码来源:range.hpp


示例10: operator

 __forceinline NodeRef operator() (const PrimRef* prims, const range<size_t>& set, const FastAllocator::CachedAllocator& alloc) const
 {
   size_t n = set.size();
   size_t items = Primitive::blocks(n);
   size_t start = set.begin();
   Primitive* accel = (Primitive*) alloc.malloc1(items*sizeof(Primitive),BVH::byteAlignment);
   typename BVH::NodeRef node = BVH::encodeLeaf((char*)accel,items);
   for (size_t i=0; i<items; i++) {
     accel[i].fill(prims,start,set.end(),bvh->scene);
   }
   return node;
 }
开发者ID:appleseedhq,项目名称:appleseed-deps,代码行数:12,代码来源:bvh_builder_sah_spatial.cpp


示例11: init_move

inline range<Iter2_t> init_move ( const range<Iter2_t> & dest,
                                  const range<Iter1_t> & src)
{   //------------- static checking ------------------------------------------
    typedef typename iterator_traits<Iter1_t>::value_type type1 ;
    typedef typename iterator_traits<Iter2_t>::value_type type2 ;
    static_assert ( std::is_same<type1, type2>::value,
                    "Incompatible iterators\n");

    //------------------------------- begin ----------------------------------
    if ( src.size() == 0 ) return range<Iter2_t>(dest.first, dest.first);
    init_move(dest.first ,src.first, src.last  );
    return range<Iter2_t>(dest.first, dest.first + src.size()) ;
};
开发者ID:fjtapia,项目名称:HPX_sort,代码行数:13,代码来源:range.hpp


示例12: OffsetRange

void OffsetRange(range& ioRange, cell inOffset, SplitType what, int split, int shift)
{
	bool wasSpecial = false;

	if (shift < 0 && what != noSplit)
		if (what == hSplit)
		{

			if (abs(ioRange.left) >= split && abs(ioRange.right) <= split - shift)
				ioRange.Set(0, 0, 0, 0);
			else if (abs(ioRange.left) >= split && abs(ioRange.left) <= split - shift)
			{
				if (ioRange.left < 0)
					ioRange.left = -split;
				else
					ioRange.left = split;
				OffsetCell(ioRange.BotRight(), inOffset, what, split, shift);
				wasSpecial = true;
			}
			else if (abs(ioRange.right) >= split && abs(ioRange.right) <= split - shift)
			{
				if (ioRange.right < 0)
					ioRange.right = -split + 1;
				else
					ioRange.right = split - 1;
				OffsetCell(ioRange.TopLeft(), inOffset, what, split, shift);
				wasSpecial = true;
			}
		}
		else if (what == vSplit)
		{

			if (abs(ioRange.top) >= split && abs(ioRange.bottom) <= split - shift)
				ioRange.Set(0, 0, 0, 0);
			else if (abs(ioRange.top) >= split && abs(ioRange.top) <= split - shift)
			{
				if (ioRange.top < 0)
					ioRange.top = -split;
				else
					ioRange.top = split;
				OffsetCell(ioRange.BotRight(), inOffset, what, split, shift);
				wasSpecial = true;
			}
			else if (abs(ioRange.bottom) >= split && abs(ioRange.bottom) <= split - shift)
			{
				if (ioRange.bottom < 0)
					ioRange.bottom = -split + 1;
				else
					ioRange.bottom = split - 1;
				OffsetCell(ioRange.TopLeft(), inOffset, what, split, shift);
				wasSpecial = true;
			}
		}

	if (!wasSpecial)
	{
		OffsetCell(ioRange.TopLeft(), inOffset, what, split, shift);
		OffsetCell(ioRange.BotRight(), inOffset, what, split, shift);
	}
} /* OffsetRange */
开发者ID:ModeenF,项目名称:OpenSumIt,代码行数:60,代码来源:CellUtils.cpp


示例13: generic_par_for_wg

void generic_par_for_wg(range<Dimensions> k_range,
                        range<Dimensions> workgroup_size) {
  queue my_queue;

  // the product of all Dimensions e.g. 10*10*10 for {10,10,10}
  auto linr_size = k_range.size(), linwg_size = workgroup_size.size();

  // these will simply have the group, local and global linear ids assigned to
  // them
  auto group_lin = buffer<int>(linr_size / linwg_size);
  auto loc_lin = buffer<int>(linr_size);
  auto gl_lin = buffer<int>(linr_size);

  my_queue.submit([&](handler &cgh) {
    auto group_lin_acc = group_lin.get_access<access::mode::write>(cgh);
    auto loc_lin_acc = loc_lin.get_access<access::mode::write>(cgh);
    auto gl_lin_acc = gl_lin.get_access<access::mode::read_write>(cgh);

    cgh.parallel_for_work_group<kernel_name>(
        nd_range<Dimensions>(k_range, workgroup_size),
        [=](group<Dimensions> group) {
          group_lin_acc[group.get_linear_id()] = group.get_linear_id();

          group.parallel_for_work_item([=](h_item<Dimensions> tile) {
            loc_lin_acc[tile.get_global_linear_id()] =
                tile.get_local_linear_id();
            gl_lin_acc[tile.get_global_linear_id()] =
                tile.get_global_linear_id();
          });
        });
  });

  auto loc_lin_out = loc_lin.get_access<access::mode::read>();
  auto group_lin_out = group_lin.get_access<access::mode::read>();
  auto gl_lin_out = gl_lin.get_access<access::mode::read>();

  for (int i = 0; i < linr_size / linwg_size; ++i) {
    BOOST_CHECK(group_lin_out[i] == i); // group id
  }

  for (int i = 0; i < linr_size; ++i) {
    BOOST_CHECK(gl_lin_out[i] == i);                            // w1 global id
    BOOST_CHECK(loc_lin_out[i] == loc_lin_out[i] % linwg_size); // local id
  }

  /* We must wait for for the queue to finish as none of buffer's destruction
     is blocking.
   */
  my_queue.wait();
}
开发者ID:keryell,项目名称:triSYCL,代码行数:50,代码来源:hierarchical.cpp


示例14: add

void database::add(range key, range data)
{
    assert(_db);
    struct slice sk, sv;

    sk.data  = const_cast<char*>(key.begin());
    sk.len = key.size();
    sv.data  = const_cast<char*>(data.begin());
    sv.len = data.size();

    if (::db_add(_db, &sk, &sv) == 0)
    {
        throw exception("error adding to ness backend");
    }
}
开发者ID:maciekgajewski,项目名称:falcondb,代码行数:15,代码来源:database.cpp


示例15: read

	[[nodiscard]]
	inline size_t read(std::istream& Stream, const range<char*>& Buffer)
	{
		{
			const auto Exceptions = Stream.exceptions();
			Stream.exceptions(Exceptions & ~(Stream.failbit | Stream.eofbit));
			SCOPE_EXIT{ Stream.exceptions(Exceptions); };

			Stream.read(Buffer.data(), Buffer.size());
			if (!Stream.bad() && Stream.eof())
				Stream.clear();
		}

		return Stream.gcount();
	}
开发者ID:FarGroup,项目名称:FarManager,代码行数:15,代码来源:io.hpp


示例16: compare

    void compare (Distances distances, Reference const & reference_)
{
    auto reference = range::view (reference_);

    while (!empty (reference)) {
        BOOST_CHECK (!empty (distances));
        if (empty (distances))
            return;

        auto d = chop_in_place (distances);
        auto r = chop_in_place (reference);
        BOOST_CHECK_EQUAL (first (d), first (r));
        BOOST_CHECK_EQUAL (second (d), second (r));
    }
    BOOST_CHECK (empty (distances));
}
开发者ID:guker,项目名称:flipsta,代码行数:16,代码来源:test-shortest_distance-sequence.cpp


示例17: intersection_with

    rect<R> intersection_with(rect<U> const r) const {
        auto const& a = *this;
        auto const& b = r;

        range<T> const ax(a.left, a.right);
        range<T> const ay(a.top,  a.bottom);
        range<U> const bx(b.left, b.right);
        range<U> const by(b.top,  b.bottom);

        auto const ix = ax.intersection_with(bx);
        auto const iy = ay.intersection_with(by);

        return rect<R>(
            ix.first, iy.first, ix.last, iy.last
        );
    }
开发者ID:bkentel,项目名称:tez-old,代码行数:16,代码来源:geometry.hpp


示例18: add_surrogate_transition

/// \brief Adds a transition for a range of surrogate symbols for the specified state
static void add_surrogate_transition(const range<int>& surrogateRange, int currentState, int targetState, ndfa* nfa) {
    // If the range is out of the range of valid surrogate characters then clip it
    if (surrogateRange.lower() >= 0x110000) return;
    if (surrogateRange.upper() > 0x110000) {
        add_surrogate_transition(range<int>(surrogateRange.lower(), 0x110000), currentState, targetState, nfa);
        return;
    }

    // Work out the range as surrogate pairs
    pair<int, int> surrogateLower   = surrogate_pair(surrogateRange.lower());
    pair<int, int> surrogateHigher  = surrogate_pair(surrogateRange.upper()-1);

    // Action depends on whether or not there are 1, 2 or more 'upper' characters
    if (surrogateLower.first == surrogateHigher.first) {
        // Transit to a state if we match the 'upper' code point
        int tmpState = nfa->add_state();
        nfa->add_transition(currentState, range<int>(surrogateLower.first, surrogateLower.first+1), tmpState);

        // Transit to the final state if we match any of the lower symbols
        nfa->add_transition(tmpState, range<int>(surrogateLower.second, surrogateHigher.second+1), targetState);
    } else {
        // Transit to a new state for the lower set of symbols
        int tmpState1 = nfa->add_state();
        nfa->add_transition(currentState, range<int>(surrogateLower.first, surrogateLower.first+1), tmpState1);

        // Transit to the final state for all the 'lower' symbols
        nfa->add_transition(tmpState1, range<int>(surrogateLower.second, 0xdc00), targetState);

        // ... do the same for the 'upper' set of symbols
        int tmpState2 = nfa->add_state();
        nfa->add_transition(currentState, range<int>(surrogateHigher.first, surrogateHigher.first+1), tmpState2);

        // Transit to the final state for all the 'lower' symbols
        nfa->add_transition(tmpState2, range<int>(0xd800, surrogateHigher.second+1), targetState);

        // If there's a middle range, then add transitions for that as well
        if (surrogateHigher.first-1 > surrogateLower.first) {
            // Transit for all of the remaining 'higher' symbols
            int tmpState3 = nfa->add_state();
            nfa->add_transition(currentState, range<int>(surrogateLower.first+1, surrogateHigher.first), tmpState3);

            // Accept for any 'lower' symbol
            nfa->add_transition(tmpState3, range<int>(0xdc00, 0xe000), targetState);
        }
    }
}
开发者ID:Logicalshift,项目名称:TameParse,代码行数:47,代码来源:ndfa.cpp


示例19: escape_line

    void escape_line(range const& line) {
        auto begin = line.begin();
        auto end = begin;
        while (end != line.end()) {
            if (*end == '<') {
                stream_ << range(begin, end) << "&lt;";
                begin = ++end;
            }
            else if (*end == '>') {
                stream_ << range(begin, end) << "&gt;";
                begin = ++end;
            }
            else ++end;
        }

        if (begin != end) stream_ << range(begin, end);
    }
开发者ID:ohjames,项目名称:meow,代码行数:17,代码来源:ast_dump.hpp


示例20: uint32_t

void accessor<BufferT>::set(const range& blk, uint32_t offset, const std::vector<type>& v) {
    if(!blk.is_valid() || offset + v.size() > blk.count || !is_mapped()) return;

    const uint32_t idx = map_start_ == 0 ? blk.start + offset : offset, count = uint32_t(v.size());
    buffer_ptr_->mapped_copy(v, idx, count);

    enqueue_flush(range(idx, uint32_t(v.size())));
}
开发者ID:otgaard,项目名称:zap,代码行数:8,代码来源:accessor.hpp



注:本文中的range类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ range_t类代码示例发布时间:2022-05-31
下一篇:
C++ rString类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap