std::fill arrays

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • cpisz@austin.rr.com

    std::fill arrays

    I saw that using std::fill was the way to go for setting all elements
    of an array to some value in one foul swoop. However when I tryed it I
    am getting an error.

    Can I only use this for vectors or can I use it for a regular array?

    what I called:
    std::fill(m_sta rt_times[0], m_start_times[8], 0);

    error:
    c:\Program Files\Microsoft Visual Studio .NET
    2003\Vc7\includ e\xutility(1136 ): error C2100: illegal indirection

    // TEMPLATE FUNCTION fill
    template<class _FwdIt,
    class _Tyinline
    void fill(_FwdIt _First, _FwdIt _Last, const _Ty& _Val)
    { // copy _Val through [_First, _Last)
    for (; _First != _Last; ++_First)
    *_First = _Val;
    }

  • Victor Bazarov

    #2
    Re: std::fill arrays

    cpisz@austin.rr .com wrote:
    I saw that using std::fill was the way to go for setting all elements
    of an array to some value in one foul swoop. However when I tryed it I
    am getting an error.
    >
    Can I only use this for vectors or can I use it for a regular array?
    >
    what I called:
    std::fill(m_sta rt_times[0], m_start_times[8], 0);
    The arguments to 'fill' have to comply with 'iterator' traits. Elements
    of the array don't. You need to use pointers:

    std::fill(m_sta rt_times + 0, m_start_times + 8, 0);
    >
    error:
    c:\Program Files\Microsoft Visual Studio .NET
    2003\Vc7\includ e\xutility(1136 ): error C2100: illegal indirection
    >
    // TEMPLATE FUNCTION fill
    template<class _FwdIt,
    class _Tyinline
    void fill(_FwdIt _First, _FwdIt _Last, const _Ty& _Val)
    { // copy _Val through [_First, _Last)
    for (; _First != _Last; ++_First)
    *_First = _Val;
    }
    V
    --
    Please remove capital 'A's when replying by e-mail
    I do not respond to top-posted replies, please don't ask


    Comment

    • Mike Wahler

      #3
      Re: std::fill arrays


      <cpisz@austin.r r.comwrote in message
      news:1153423518 .512957.275640@ b28g2000cwb.goo glegroups.com.. .
      >I saw that using std::fill was the way to go for setting all elements
      of an array to some value in one foul swoop. However when I tryed it I
      am getting an error.
      >
      Can I only use this for vectors or can I use it for a regular array?
      >
      what I called:
      std::fill(m_sta rt_times[0], m_start_times[8], 0);
      std::fill(&m_st art_times[0], &m_start_tim es[8], 0);

      or

      std::fill(m_sta rt_times, m_start_times + 8, 0);

      The second argument should be the address of the
      'one-past-the-end' element; e.g. your example above
      assumes an eight element array (indices 0 through
      7).

      -Mike
      >
      error:
      c:\Program Files\Microsoft Visual Studio .NET
      2003\Vc7\includ e\xutility(1136 ): error C2100: illegal indirection
      -Mike


      Comment

      Working...