Uploaded image for project: 'C++ Standard Library'
  1. C++ Standard Library
  2. STDCXX-179

std::vector::insert(iterator, ForwardIterator, ForwardIterator) inserts wrong data

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • 4.1.3
    • 4.1.4
    • 23. Containers
    • None
    • All.

    Description

      There is an interesting problem that occurs with vectors. Here is the sample code:

      #include <iostream> // for cout, endl
      #include <vector> // for vector

      int main ()
      {
      std::vector<int> a;
      a.push_back(1);
      a.push_back(2);
      a.push_back(3);
      a.push_back(4);

      std::vector<int> b;
      b.push_back(0);

      a.insert(a.begin(), b.begin(), b.end());

      for( std::vector<int>::iterator i = a.begin(); i != a.end(); ++i)
      std::cout << (*i) << ",";
      std::cout << std::endl;

      return 0;
      }

      The output is 0,2,3,1,2, instead of 0,1,2,3,4, .

      I tried some other combinations as follows:
      a = 1, b = 0 - works, get 0,1
      a = 1,2, b = 0 - works, get 0,1,2
      a = 1,2,3, b = 0 - fails, get 0,2,1,2
      a = 1,2,3, b = 0, 5 - fails, get 0,5,3,2,3
      a = 1,2, b = 0,5 - works, get 0,5,1,2
      a = 1,2,3,4, b = 0,5 - works, get 0,5,1,2,3,4
      a = 1,2,3,4,5, b = 0,5 - fails, get 0,5,3,1,2,3,5

      Attachments

        1. t.cpp
          2 kB
          Martin Sebor

        Issue Links

          Activity

            People

              sebor Martin Sebor
              charitonc Craig Chariton
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: