Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.

 

 

 

 

 

(C++) std::remove

 

There exist two different versions of std::remove in the STL:

  1. std::remove in the header file algorithm.h: algorithm to remove elements from a container
  2. std::remove in the header file cstdio.h: File I/O function to remove a file

 

 

 

 

 

Example

 

The example below shows both versions of std::remove.

 

#include <algorithm>
#include <cassert>
#include <cstdio>
#include <fstream>
#include <iterator>
#include <iostream>
#include <vector>

int main()
{
  //Remove elements from a std::vector
  //using std::remove from algorithm.h
  {
    std::vector<int> v;
    v.push_back(0);
    v.push_back(42);
    v.push_back(1);
    v.push_back(42);
    v.push_back(2);
    v.push_back(42);
    v.push_back(3);
    
    std::cout << "v before std::remove: ";
    std::copy(v.begin(),v.end(),std::ostream_iterator<int>(std::cout," "));
    std::cout << std::endl;
    
    const std::vector<int>::iterator new_end
        = std::remove(v.begin(),v.end(),42);
    
    std::cout << "v after std::remove, before erase: ";
    std::copy(v.begin(),v.end(),std::ostream_iterator<int>(std::cout," "));
    std::cout << std::endl;
    
    v.erase(new_end,v.end());
    
    std::cout << "v after erase: ";
    std::copy(v.begin(),v.end(),std::ostream_iterator<int>(std::cout," "));
    std::cout << std::endl;
  }
  
  //Remove a file using std::remove in cstdio.h
  {
    //Try to delete the non-existing test.txt file
    const bool deletion_failed = std::remove("test.txt");
    assert(deletion_failed);
  }
  {
    //Create the file test.txt
    std::ofstream f("test.txt");
    //Delete it again
    const bool deletion_failed = std::remove("test.txt");
    assert(!deletion_failed);
  }
}

 

Screen output:

 

v before std::remove: 0 42 1 42 2 42 3
v after std::remove, before erase: 0 1 2 3 2 42 3
v after erase: 0 1 2 3

 

 

 

 

 

Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.

 

Valid XHTML 1.0 Strict