C++/Data Structure/Vector

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Access a vector using an iterator.

<source lang="cpp">

  1. include <iostream>
  2. include <vector>

using namespace std; int main() {

 vector<int> v;
 int i;
 for(i = 0; i <10; i++) 
    v.push_back(i);
 for(i = 0; i <10; i++) 
    cout << v[ i ] << " ";
 cout << endl;
 vector<int>::iterator p = v.begin();
 while(p != v.end()) {
   cout << *p << " ";
   p++;
 }
 return 0;

}


      </source>


Accessing a Vector Through an Iterator

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <cctype>

using namespace std; int main() {

 vector<char> vectorObject(10); 
 vector<char>::iterator p;      // create an iterator
 int i;
 p = vectorObject.begin();
 i = 0;
 while(p != vectorObject.end()) {
   *p = i + "a";
   p++;
   i++;
 }
 cout << "Original contents:\n";
 p = vectorObject.begin();
 while(p != vectorObject.end()) {
   cout << *p << " ";
   p++;
 }
 cout << "\n\n";
 // change contents of vector
 p = vectorObject.begin();
 while(p != vectorObject.end()) {
   *p = toupper(*p);
   p++;
 }
 // display contents of vector
 cout << "Modified Contents:\n";
 p = vectorObject.begin();
 while(p != vectorObject.end()) {
   cout << *p << " ";
   p++;
 }
 cout << endl;
 return 0;

}


      </source>


Access the elements of a vector through an iterator.

<source lang="cpp">

  1. include <iostream>
  2. include <vector>

using namespace std; int main() {

 vector<int> vectorObject(10);
 vector<int>::iterator p; 
 int i;
 p = vectorObject.begin();
 i = 0;
 while(p != vectorObject.end()) {
   *p = i;                
   p++;                   
   i++;
 }
 
 cout << "Original contents:\n";
 p = vectorObject.begin();
 while(p != vectorObject.end()) {
   cout << *p << " ";
   p++;
 }
 cout << "\n\n";
 p = vectorObject.begin();
 while(p != vectorObject.end()) {
   *p = *p * 2;           // change contents of vector
   p++;
 }
 cout << "Modified Contents:\n";
 p = vectorObject.begin();
 while(p != vectorObject.end()) {
   cout << *p << " ";     // display contents of vector
   p++;
 }
 cout << endl;
 return 0;

}

      </source>


Create permutations based on vector

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <algorithm>

using namespace std; int main() {

 vector<char> vectorObject;
 int i;
 for(i = 0; i < 3; i++) 
    vectorObject.push_back("A"+i);
 cout << "All permutations of 3 characters:\n";
 do {
   for(i = 0; i < vectorObject.size(); i++)
     cout << vectorObject[ i ];
     
   cout << endl;
 } while(next_permutation(vectorObject.begin(), vectorObject.end()));
 return 0;

}


      </source>


Creating and Resizing Vectors

<source lang="cpp">

  1. include <iostream>
  2. include <vector>

using namespace std; typedef vector<int> intVector; template<class T, class A> void ShowVector(const vector<T, A>& v); int main() {

   intVector    intValueVector;        
   cout << "intValueVector" << "\n";
   ShowVector(intValueVector);
   intVector    intValueVector2(3);    
   cout << "intValueVector2(3)" << "\n";
   ShowVector(intValueVector2);
   intValueVector2.resize(5, 100);    
                            
   cout << "intValueVector2 after resize(5, 100)\n";
   ShowVector(intValueVector2);
   intValueVector2.reserve(10);       
   cout << "intValueVector2 after reserve(10)\n";
   ShowVector(intValueVector2);
   return 0;

} template<class T, class A> void ShowVector(const vector<T, A>& v) {

   cout << "max_size() = " << v.max_size();
   cout << "\tsize() = " << v.size();
   cout << "\t" << (v.empty()? "empty": "not empty");
   cout << "\tcapacity() = " << v.capacity();
   cout << "\n\n";

}

      </source>


Demonstrate accumulate() in vector

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <numeric>

using namespace std; int main() {

 vector<int> vectorObject(5);
 int i, total;
 for(i = 0; i < 5; i++) 
    vectorObject[ i ] = i;
 total = accumulate(vectorObject.begin(), vectorObject.end(), 0);
 cout << "Summation of vectorObject is: " << total;
 return 0;

}

      </source>


Demonstrate adjacent_difference() in vector

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <numeric>

using namespace std; int main() {

 vector<int> vectorObject(10), vectorObject2(10);
 int i;
 for(i = 0; i <10; i++) 
    vectorObject[i] = i*2;
 cout << "Original sequence: ";
 for(i = 0; i <10; i++)
   cout << vectorObject[ i ] << " ";
 cout << endl;
 adjacent_difference(vectorObject.begin(), vectorObject.end(), vectorObject2.begin());
 cout << "Resulting sequence: ";
 for(i = 0; i < 10; i++)
   cout << vectorObject2[ i ] << " ";
 return 0;

}


      </source>


Demonstrate allocator"s max_size() fucntion in vector

<source lang="cpp">

  1. include <iostream>
  2. include <vector>

using namespace std; int main() {

 vector<short int>::allocator_type vectorShortIntAllocator;
 vector<int>::allocator_type       vectorIntAllocator;
 vector<long int>::allocator_type  vectorLongAllocator;
 vector<float>::allocator_type vectorFloatAllocator;
 vector<double>::allocator_type vectorDoubleAllocator;
 cout << "Here are the number of object that can be allocated.\n";
 cout << "short integers: ";
 cout << vectorShortIntAllocator.max_size() << endl;
 
 cout << "integers: ";
 cout << vectorIntAllocator.max_size() << endl;
 cout << "long integers: ";
 cout << vectorLongAllocator.max_size() << endl;
 cout << "floats: ";
 cout << vectorFloatAllocator.max_size() << endl;
 cout << "doubles: ";
 cout << vectorDoubleAllocator.max_size() << endl;
 return 0;

}

      </source>


Demonstrate count and count_if.

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <algorithm>

using namespace std; bool even(int x) {

 return !(x%2);

} int main() {

 vector<int> vectorObject; 
 int i;
 for(i = 0; i <20; i++) {
   if(i%2) vectorObject.push_back(1);
   else vectorObject.push_back(2);
 }
 cout << "Sequence: ";
 for(i = 0; i <vectorObject.size(); i++) 
    cout << vectorObject[ i ] << " ";
 cout << endl;
 int n;
 n = count(vectorObject.begin(), vectorObject.end(), 1);
 cout << n << " elements are 1\n";
 n = count_if(vectorObject.begin(), vectorObject.end(), even);
 cout << n << " elements are even.\n";
 return 0;

}


      </source>


Demonstrate count_if().

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <algorithm>

using namespace std; bool isEven(int i) {

 return !(i%2);

} int main() {

 vector<int> vectorObject;
 int i;
 for(i =1; i < 20; i++) 
    vectorObject.push_back(i);
 cout << "Sequence:\n";
 for(i = 0; i <vectorObject.size(); i++)
   cout << vectorObject[i] << " ";
 cout << endl;
 i = count_if(vectorObject.begin(), vectorObject.end(), isEven);
 cout << i << " numbers are evenly divisible by 2.\n";
 return 0;

}


      </source>


Demonstrate count() in vector

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <cstdlib>
  4. include <algorithm>

using namespace std; int main() {

 vector<bool> vectorObject;
 int i;
 
 for(i = 0; i < 10; i++) {
  if(rand() % 2) 
     vectorObject.push_back(true);
  else 
     vectorObject.push_back(false);
 }
 cout << "Sequence:\n";
 for(i = 0; i <vectorObject.size(); i++)
   cout << boolalpha << vectorObject[i] << " ";
 cout << endl;
 i = count(vectorObject.begin(), vectorObject.end(), true);
 cout << i << " elements are true.\n";
 return 0;

}

      </source>


Demonstrate inner_product() in vector

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <numeric>

using namespace std; int main() {

 vector<int> vectorObject1(5), vectorObject2(5);
 int i, total;
 for(i = 0; i < 5; i++) 
    vectorObject1[ i ] = i;
 for(i = 0; i < 5; i++) 
    vectorObject2[ i ] = i+2;
 total = inner_product(vectorObject1.begin(), vectorObject1.end(), vectorObject2.begin(), 0);
 cout << "Inner product is: " << total;
 return 0;

}


      </source>


Demonstrate insert and erase.

<source lang="cpp">

  1. include <iostream>
  2. include <vector>

using namespace std; int main() {

 vector<int> v(5, 1);
 int i;
 cout << "Size = " << v.size() << endl;
 cout << "Original contents:\n";
 for(i = 0; i <v.size(); i++) 
    cout << v[ i ] << " ";
 cout << endl << endl;
 vector<int>::iterator p = v.begin();
 p += 2;
 v.insert(p, 10, 9);
 cout << "Size after insert = " << v.size() << endl;
 cout << "Contents after insert:\n";
 for(i = 0; i <v.size(); i++) 
    cout << v[ i ] << " ";
 cout << endl << endl;
 p = v.begin();
 p += 2;  
 v.erase(p, p+10); 
 cout << "Size after erase = " << v.size() << endl;
 cout << "Contents after erase:\n";
 for(i = 0; i <v.size(); i++) 
    cout << v[ i ] << " ";
 cout << endl;
 return 0;

}


      </source>


Demonstrate insert_iterator in vector

<source lang="cpp">

  1. include <iostream>
  2. include <iterator>
  3. include <vector>

using namespace std; int main() {

 vector<int> vectorObject;
 vector<int>::iterator itr;
 int i;
 for(i = 0; i <5; i++)
   vectorObject.push_back(i);
 cout << "Original array: ";
 itr = vectorObject.begin();
 while(itr != vectorObject.end())
   cout << *itr++ << " ";
 cout << endl;
 itr = vectorObject.begin();
 itr += 2; // point to element 2
 // create insert_iterator to element 2
 insert_iterator<vector<int> > i_itr(vectorObject, itr);
 
 *i_itr++ = 100;            // insert rather than overwrite
 *i_itr++ = 200;
 cout << "Array after insertion: ";
 itr = vectorObject.begin();
 while(itr != vectorObject.end())
   cout << *itr++ << " ";
 return 0;

}


      </source>


Demonstrate partial_sum() in Vector

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <numeric>

using namespace std; int main() {

 vector<int> vectorObject(5), vectorObject2(5);
 int i;
 for(i = 0; i < 5; i++) 
    vectorObject[i] = i;
 cout << "Original sequence: ";
 for(i = 0; i <5; i++)
   cout << vectorObject[i] << " ";
 cout << endl;
 partial_sum(vectorObject.begin(), vectorObject.end(), vectorObject2.begin());
 cout << "Resulting sequence: ";
 for(i = 0; i < 5; i++)
   cout << vectorObject2[ i ] << " ";
 return 0;

}

      </source>


Demonstrate remove_copy and replace_copy.

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <algorithm>

using namespace std; int main() {

 char str[] = "www.java2s.com";
 vector<char> vectorObject, vectorObject2(30); 
 unsigned int i;
 for(i = 0; str[i]; i++) 
    vectorObject.push_back(str[i]);
 cout << "Input sequence:\n";
 for(i = 0; i <vectorObject.size(); i++) 
    cout << vectorObject[i];
 cout << endl;
 remove_copy(vectorObject.begin(), vectorObject.end(), vectorObject2.begin(), " ");
 cout << "Result after removing spaces:\n";
 for(i = 0; i <vectorObject2.size(); i++) 
    cout << vectorObject2[i];
 cout << endl << endl;
 cout << "Input sequence:\n";
 for(i = 0; i <vectorObject.size(); i++) 
    cout << vectorObject[i];
 cout << endl;
 // replace spaces with colons
 replace_copy(vectorObject.begin(), vectorObject.end(), vectorObject2.begin(), " ", ":");
 cout << "Result after repacing spaces with colons:\n";
 for(i = 0; i <vectorObject2.size(); i++) 
    cout << vectorObject2[i];
 cout << endl;
 return 0;

}


      </source>


Demonstrate remove_copy in Vector

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <algorithm>

using namespace std; int main() {

 vector<int> v, vectorObject2(20); 
 int i;
 for(i = 0; i <20; i++) {
   if(i%2) v.push_back(1);
   else v.push_back(2);
 }
 cout << "Sequence: ";
 for(i = 0; i <v.size(); i++) 
    cout << v[ i ] << " ";
 cout << endl;
 remove_copy(v.begin(), v.end(), vectorObject2.begin(), 1);
 cout << "Result: ";
 for(i = 0; i <vectorObject2.size(); i++) 
    cout << vectorObject2[ i ] << " ";
 cout << endl << endl;
 return 0;

}

      </source>


Demonstrate reverse in vector

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <algorithm>

using namespace std; int main() {

 vector<int> vectorObject;
 int i;
 for(i = 0; i <10; i++) 
     vectorObject.push_back(i);
 cout << "Initial: ";
 for(i = 0; i <vectorObject.size(); i++) 
    cout << vectorObject[i] << " ";
 cout << endl;
 reverse(vectorObject.begin(), vectorObject.end());
 cout << "Reversed: ";
 for(i = 0; i <vectorObject.size(); i++) 
    cout << vectorObject[i] << " ";
 return 0;

}


      </source>


Demonstrating the four ways that vectors can be created.

<source lang="cpp">

  1. include <iostream>
  2. include <vector>

using namespace std; int main() {

 vector<char> a;         // empty
 vector<char> b(5, "X"); // size and initialize
 vector<char> c(b);      // initialize with another vector 
 int i;
 for(i = 0; i <5; i++) 
    a.push_back("A"+i);
 // create a vector from a range
 vector<char> d(a.begin()+1, a.end()-1); 
 for(i = 0; i <a.size(); i++)
   cout << "a[" << i << "]: " << a[i] << "  ";
 cout << "\n\n";
 for(i = 0; i <b.size(); i++)
   cout << "b[" << i << "]: " << b[i] << "  ";
 cout << "\n\n";
 for(i = 0; i <c.size(); i++)
   cout << "c[" << i << "]: " << c[i] << "  ";
 cout << "\n\n";
 for(i = 0; i <d.size(); i++)
   cout << "d[" << i << "]: " << d[i] << "  ";
 return 0;

}


      </source>


end() in vector

<source lang="cpp">

  1. include <iostream>
  2. include <vector>

using namespace std; int main() {

 vector<int> vectorObject; 
 int i;
 for(i = 0; i <10; i++) 
    vectorObject.push_back(i);
 cout << "Vector printed forwards:\n";
 vector<int>::iterator p = vectorObject.begin();
 while(p != vectorObject.end()) {
   cout << *p << " ";
   p++;
 }
 cout << "\n";
 cout << "Vector printed backwards:\n";
 p = vectorObject.end();
 while(p != vectorObject.begin()) {
   p--;                     // decrement iterator before using
   cout << *p << " ";
 }
 return 0;

}

      </source>


Matching Elements Using the equals and mismatch Operations

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <algorithm>

using namespace std; template<class Container, class Iterator> void ShowElement(Container& c, Iterator& itor); int main() {

   typedef vector<int>::iterator    VectorInterator;
   vector<int>    intValueVector(4);
   intValueVector[0] = 1;
   intValueVector[1] = 2;
   intValueVector[2] = 3;
   intValueVector[3] = 4;
   vector<int>    intValueVector2(3);
   intValueVector2[0] = 1;
   intValueVector2[1] = 2;
   intValueVector2[2] = 3;
   VectorInterator    first1 = intValueVector.begin();
   VectorInterator    last1  = intValueVector.end();
   VectorInterator    first2 = intValueVector2.begin();
   if (equal(first1, last1, first2))
       cout << "intValueVector == intValueVector2\n";
   else
       cout << "intValueVector != intValueVector2\n";
   pair<VectorInterator, VectorInterator> pi = mismatch(first1, last1, first2);
   cout << "First mismatch element in intValueVector = ";
   ShowElement(intValueVector, pi.first);
   cout << "\n";
   cout << "First mismatch element in intValueVector2 = ";
   ShowElement(intValueVector2, pi.second);
   cout << "\n";
   return 0;

} template<class Container, class Iterator> void ShowElement(Container& c, Iterator& itor) {

   if (itor != c.end())
   {
       if (itor != c.begin())
           cout << *itor << "\tthe previous element is " << *(itor - 1);
       else
           cout << "first";
   }
   else
       cout << "last";

}

      </source>


Perform an in-place merge for two vectors

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <algorithm>

using namespace std; int main() {

 vector<char> vectorObject1;
 int i;
 for(i = 0; i <26; i+=2) 
     vectorObject1.push_back("A"+i);
 for(i = 0; i <26; i+=2) 
    vectorObject1.push_back("B"+i);
 cout << "Original contents of vectorObject1:\n";
 for(i = 0; i <vectorObject1.size(); i++)
   cout << vectorObject1[ i ];
 cout << endl;
 inplace_merge(vectorObject1.begin(), vectorObject1.begin()+13, vectorObject1.end());
 cout << "Result of merge:\n";
 for(i = 0; i <vectorObject1.size(); i++)
   cout << vectorObject1[ i ];
 return 0;

}

      </source>


Store a class object in a vector.

<source lang="cpp">

  1. include <iostream>
  2. include <vector>

using namespace std; class Demo {

 double d;

public:

 Demo() { 
    d = 0.0; 
 }
 Demo(double x) { 
    d = x; 
 }
 Demo &operator=(double x) {
   d = x; return *this;
 }
 double getd() { 
   return d; 
 }

}; bool operator<(Demo a, Demo b) {

 return a.getd() < b.getd();

} bool operator==(Demo a, Demo b) {

 return a.getd() == b.getd();

} int main() {

 vector<Demo> v;
 int i;
 for(i = 0; i <10; i++)
   v.push_back(Demo(i/3.0));
 for(i = 0; i <v.size(); i++)
   cout << v[ i ].getd() << " ";
 cout << endl;
 for(i = 0; i <v.size(); i++)
   v[ i ] = v[ i ].getd() * 2.1;
 for(i = 0; i <v.size(); i++)
   cout << v[ i ].getd() << " ";
 return 0;

}

      </source>


Storing Class Objects with overloaded operators in a Vector

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <cstdlib>

using namespace std; class IntValueClass {

 int temp;

public:

 IntValueClass() { 
    temp = 0; 
 }
 IntValueClass(int x) { 
    temp = x; 
 }
 IntValueClass &operator=(int x) {
   temp = x; return *this;
 }
 double get_temp() { 
   return temp; 
 }

}; bool operator<(IntValueClass a, IntValueClass b) {

 return a.get_temp() < b.get_temp();

} bool operator==(IntValueClass a, IntValueClass b) {

 return a.get_temp() == b.get_temp();

} int main() {

 vector<IntValueClass> v;
 unsigned int i;
 for(i=0; i<7; i++)
   v.push_back(IntValueClass(60 + rand()%30));
 cout << "Fahrenheit temperatures:\n";
 for(i=0; i<v.size(); i++)
   cout << v[i].get_temp() << " ";
 cout << endl;
 for(i=0; i<v.size(); i++)
   v[i] = (int)(v[i].get_temp()-32) * 5/9 ;
 cout << "Centigrade temperatures:\n";
 for(i=0; i<v.size(); i++)
   cout << v[i].get_temp() << " ";
 return 0;

}

      </source>


The basic operation of a vector: size, push_back,

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <cctype>

using namespace std; int main() {

 vector<char> vectorObject(10);         // create a vector of length 10
 unsigned int i;
                                               
 cout << "Size = " << vectorObject.size() << endl;
 for(i=0; i<10; i++) 
    vectorObject[i] = i + "a";
 cout << "Current Contents:\n";
 for(i=0; i<vectorObject.size(); i++) 
    cout << vectorObject[i] << " ";
 cout << "\n\n";
 cout << "Expanding vector\n";
 for(i=0; i<10; i++) 
    vectorObject.push_back(i + 10 + "a");
 cout << "Size now = " << vectorObject.size() << endl;
 cout << "Current contents:\n";
 for(i=0; i<vectorObject.size(); i++) 
    cout << vectorObject[i] << " ";
 cout << "\n\n";
 for(i=0; i<vectorObject.size(); i++) 
    vectorObject[i] = toupper(vectorObject[i]);
 cout << "Modified Contents:\n";
 for(i=0; i<vectorObject.size(); i++) 
   cout << vectorObject[i] << " ";
 cout << endl;
 return 0;

}


      </source>


Use istream_iterator to read various data types

<source lang="cpp">

  1. include <iostream>
  2. include <iterator>
  3. include <string>
  4. include <vector>

using namespace std; int main() {

 int i;
 double d;
 string str;
 vector<int> vi;
 vector<double> vd;
 vector<string> vs;

 cout << "Enter some integers, enter 0 to stop.";
 istream_iterator<int> int_itr(cin);
 do {
   i = *int_itr; 
   if(i != 0) {
     vi.push_back(i);  
     ++int_itr; 
   }
 } while (i != 0); 
 cout << "Enter some doubles, enter 0 to stop.";
 istream_iterator<double> double_itr(cin);
 do {
   d = *double_itr; 
   if(d != 0.0) {
     vd.push_back(d); 
     ++double_itr; 
   }
 } while (d != 0.0); 
 cout << "Enter some strings, enter "quit" to stop.";
 istream_iterator<string> string_itr(cin);
 do {
   str = *string_itr; 
   if(str != "quit") {
     vs.push_back(str); 
     ++string_itr;
   }
 } while (str != "quit"); 
 cout << "Here is what you entered:\n";
 for(i = 0; i <vi.size(); i++)
   cout << vi[ i ] << " ";
 cout << endl;
 for(i = 0; i <vd.size(); i++)
   cout << vd[ i ] << " ";
 cout << endl;
 for(i = 0; i <vs.size(); i++)
   cout << vs[ i ] << " ";
 return 0;

}

      </source>


Use istream_iterator with the copy algorithm

<source lang="cpp">

  1. include <iostream>
  2. include <iterator>
  3. include <algorithm>
  4. include <vector>

using namespace std; int main() {

 int i;
 vector<int> v(5);
 cout << "Enter 5 integers: \n";
 
 istream_iterator<int> int_itr(cin);
 copy(int_itr, istream_iterator<int>(), v.begin());
 cout << "Here are the values you entered: ";
 for(i = 0; i <v.size(); i++) cout << v[ i ] << " ";
 return 0;

}

      </source>


Use pop_back() and empty().

<source lang="cpp">

  1. include <iostream>
  2. include <vector>

using namespace std; int main() {

 vector<char> vectorObject;
 int i;
 for(i = 0; i <10; i++)
   vectorObject.push_back(i + "A");
 cout << "Vector"s original contents:\n";
 for(i = 0; i <vectorObject.size(); i++)
   cout << vectorObject[i] << " ";
 cout << "\n\n";
 do {
   vectorObject.pop_back(); // remove an element from the end
   cout << "Vector now contains:\n";
   for(i = 0; i <vectorObject.size(); i++)
     cout << vectorObject[i] << " ";
   cout << endl;
 } while(!vectorObject.empty());
 return 0;

}


      </source>


Using clear()

<source lang="cpp">

  1. include <iostream>
  2. include <vector>

using namespace std; int main() {

 vector<int> vectorObject;
 int i;
 for(i = 0; i <10; i++) 
    vectorObject.push_back(i);
 cout << "Initial contents of vectorObject: ";
 for(i = 0; i <vectorObject.size(); i++)
   cout << vectorObject[i] << " ";
 cout << endl;
 cout << "Initial size of vectorObject: ";
 cout << vectorObject.size() << endl;
 cout << "Initial capacity of vectorObject: ";
 cout << vectorObject.capacity() << "\n\n";
 vectorObject.clear();
 cout << "Size of vectorObject after clear(): ";
 cout << vectorObject.size() << endl;
 cout << "Capacity of vectorObject after clear(): ";
 cout << vectorObject.capacity() << "\n\n";
 // put new values in vectorObject
 for(i = 0; i <10; i++) 
    vectorObject.push_back(i*10);
 cout << "New contents of vectorObject: ";
 for(i = 0; i <vectorObject.size(); i++)
   cout << vectorObject[i] << " ";
 cout << endl;
 
 cout << "Size of vectorObject after adding new elements: ";
 cout << vectorObject.size() << endl;
 cout << "Capacity of vectorObject after adding new elements: ";
 cout << vectorObject.capacity() << "\n\n";
 return 0;

}


      </source>


Using Other Search functions

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <iterator>
  4. include <functional>
  5. include <algorithm>

using namespace std; template<class Container, class Iterator> void ShowElement(Container& c, Iterator& itor); int main() {

   typedef vector<int>::iterator VectorInterator;
   vector<int>    intValueVector(10);
   intValueVector[0] = 0;
   intValueVector[1] = 1;
   intValueVector[2] = 1;
   intValueVector[3] = 2;
   intValueVector[4] = 3;
   intValueVector[5] = 4;
   intValueVector[6] = 1;
   intValueVector[7] = 2;
   intValueVector[8] = 3;
   intValueVector[9] = 5;
   vector<int>    intValueVector2(3);
   intValueVector2[0] = 1;
   intValueVector2[1] = 2;
   intValueVector2[2] = 3;
   VectorInterator    first1 = intValueVector.begin();
   VectorInterator    last1  = intValueVector.end();
   VectorInterator    first2 = intValueVector2.begin();
   VectorInterator    last2  = intValueVector2.end();
   VectorInterator    retItor = find_first_of(first1, last1, first2, last2);
   cout << "find_first_of(first1, last1, first2, last2) = ";
   ShowElement(intValueVector, retItor);
   cout << "\n";
   retItor = search(first1, last1, first2, last2);
   cout << "search(first1, last1, first2, last2) = ";
   ShowElement(intValueVector, retItor);
   cout << "\n";
   retItor = find_end(first1, last1, first2, last2);
   cout << "find_end(first1, last1, first2, last2) = ";
   ShowElement(intValueVector, retItor);
   cout << "\n";
   return 0;

} template<class Container, class Iterator> void ShowElement(Container& c, Iterator& itor) {

   if (itor != c.end())
   {
       if (itor != c.begin())
           cout << *itor << "\tthe previous element is " << *(itor - 1);
       else
           cout << "first";
   }
   else
       cout << "last";

}

      </source>


Vector Capacity vs size

<source lang="cpp">

  1. include <iostream>
  2. include <vector>

using namespace std; int main() {

 vector<char> vectorObject(10);
 cout << "Initial size: " << vectorObject.size() << endl;
 cout << "Initial capacity: " << vectorObject.capacity();
 cout << "\n\n";
 vectorObject.reserve(20); // reserve more space
 cout << "Size after reserve: " << vectorObject.size() << endl;
 cout << "Capacity after reserve: " << vectorObject.capacity();
 cout << "\n\n";
 return 0;

}

      </source>


Vector Init Array

<source lang="cpp">

  1. include <iostream>
  2. include <vector>

using namespace std; void print( vector<int> ); int main() {

   int data[] = {111, 112, 123, 134};
   int size = sizeof( data ) / sizeof( data[0] );
   vector<int> vec( data, &data[ size ] );
   print( vec );
   return 0;

} void print( vector<int> vec ) {

   vector<int>::iterator p = vec.begin();
   while ( p < vec.end() )
     cout << *p++ << " ";
   cout << endl;

}

      </source>


Vector: Insert Erase Sort

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <algorithm>

using namespace std; void print( vector<int> ); int main() {

   vector<int> vectorObject(5);                                                    
   print( vectorObject );   
   vector<int>::iterator p =  vectorObject.begin();                                
   cout << *p << endl;
   vectorObject.insert( vectorObject.begin(), 1 );                                          
   print( vectorObject );      
   cout << *p << endl;
   p = vectorObject.begin();   
   cout << *p << endl;
   vectorObject.erase( vectorObject.begin() );                                              
   print( vectorObject );      
   vectorObject.insert( vectorObject.begin() + 1, 1 );                                      
   print( vectorObject );              
   vectorObject.erase( vectorObject.begin() + 2 );                                          
   print( vectorObject );              
   vectorObject.insert( vectorObject.end(), 3 );                                            
   print( vectorObject );              
   vectorObject.erase( vectorObject.end() - 1 );                                            
   print( vectorObject );              
   vectorObject.insert( vectorObject.begin() + 3, 1 );                                      
   print( vectorObject );              
   vectorObject.erase( find( vectorObject.begin(), vectorObject.end(), 6 ) );                        
   print( vectorObject );              
   vectorObject.insert( vectorObject.begin() + 1, 3 );                                      
   vectorObject.insert( vectorObject.begin() + 5, 3 );
   print( vectorObject );                    
   vectorObject.erase( find( vectorObject.begin(), vectorObject.end(), 3 ) ); 
   vectorObject.erase( find( vectorObject.begin(), vectorObject.end(), 3 ) ); 
   print( vectorObject );                                   
   vectorObject[0] = 231;                                                           
   vectorObject[1] = 21;
   vectorObject[2] = 116;
   vectorObject[3] = 45;
   vectorObject[4] = 116;
   print( vectorObject );                                   
   sort( vectorObject.begin(), vectorObject.end() );                                        
   print( vectorObject );                                   
   return 0;

} void print( vector<int> v ) {

    vector<int>::iterator p = v.begin();
    while ( p != v.end() )
        cout << *p++ << " ";
    cout << endl;

}

      </source>


Work with heaps: make_heap from vector

<source lang="cpp">

  1. include <iostream>
  2. include <vector>
  3. include <algorithm>

using namespace std; int main() {

 vector<char> vectorObject;
 int i;
 for(i = 0; i <20; i+=2) 
    vectorObject.push_back("A"+i);
 cout << "Sequence before building heap:";
 for(i = 0; i <vectorObject.size(); i++)
   cout << vectorObject[ i ] << " ";
 cout << endl;
 
 make_heap(vectorObject.begin(), vectorObject.end());
 cout << "Sequence after building heap:";
 for(i = 0; i <vectorObject.size(); i++)
   cout << vectorObject[ i ] << " ";
 cout << endl;
 vectorObject.push_back("H"); 
 push_heap(vectorObject.begin(), vectorObject.end()); 
 cout << "Sequence after pushing onto heap:";
 for(i = 0; i <vectorObject.size(); i++)
   cout << vectorObject[ i ] << " ";
 cout << endl;
 pop_heap(vectorObject.begin(), vectorObject.end());
 cout << "Sequence after poping from heap:";
 for(i = 0; i <vectorObject.size(); i++)
   cout << vectorObject[ i ] << " ";
 cout << endl;
 return 0;

}

      </source>