CPP/STL/Vector

From ProgrammingExamples
< CPP
Revision as of 14:22, 25 February 2011 by Daviddoria (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Vector.cpp

#include <iostream>
#include <vector>
#include <cstdlib>
 
#include <algorithm>
 
double RandomDouble();
void TestVector();
void RemoveElement();
void TestResize();
void TestInsert(); // append
void TestCopy();
void TestFind();
void ArrayStyleInit();
 
int main(int, char*[])
{
  //TestVector();
  //RemoveElement();
  //TestResize();
  //TestInsert();
  //TestCopy();
  //TestFind();
  ArrayStyleInit();
 
  return 0;
}
 
void ArrayStyleInit()
{
  std::vector<int> vec({1,2,6,7,8,89}); //need -std=c++0x
}
 
void TestFind()
{
  std::vector<unsigned int> V(10);
 
  for(unsigned int i = 0; i < 10; i++)
  {
    V[i] = 10*i;
    std::cout << V[i]   << " ";
  }
 
  std::cout << std::endl;
 
  std::vector<unsigned int>::iterator it = find(V.begin(), V.end(), 70);
 
  if(it == V.end())
  {
      std::cout << "Could not find 70 in the vector"  << std::endl;
  }
  else
  {
    std::cout << "The number 70 is located at index " << it - V.begin() << std::endl;
  }
}
 
void TestCopy()
{
  std::vector<double> V(10);
 
  for(unsigned int i = 0; i < 10; i++)
  {
    V[i] = RandomDouble();
    std::cout << V[i]   << " ";
  }
 
  std::vector<double> B(V.size());
 
  std::copy(V.begin(), V.end(), B.begin());
 
  std::cout << std::endl;
 
  for(unsigned int i = 0; i < 10; i++)
  {
    std::cout << B[i]   << " ";
  }
}
 
double RandomDouble()
{
	//produce a random double between 0 and 1
	return drand48();
}
 
void TestResize()
{
	std::vector<double> V(10);
 
	for(unsigned int i = 0; i < 10; i++)
    {
		V[i] = RandomDouble();
    }
 
	for(unsigned int i = 0; i < 10; i++)
	{
		std::cout << V[i] << " ";
	}
	std::cout << "Size: " << V.size() << std::endl;
 
	V.resize(5);
 
	for(unsigned int i = 0; i < 5; i++)
	{
		std::cout << V[i] << " ";
	}
	std::cout << "Size: " << V.size() << std::endl;
 
}
 
void TestVector()
{
	std::vector<double> V;
 
	std::cout << "Size: " << V.size() << std::endl;
	std::cout << "Empty? " << V.empty() << std::endl;
 
	for(unsigned int i = 0; i < 100; i++)
    {
		V.push_back(RandomDouble());
    }
 
	std::cout << "Size: " << V.size() << std::endl;
	std::cout << "Empty? " << V.empty() << std::endl;
 
	V.clear();
 
	std::cout << "Size: " << V.size() << std::endl;
	std::cout << "Empty? " << V.empty() << std::endl;
}
 
void RemoveElement()
{
	unsigned int num = 10;
	std::vector<unsigned int> V(num);
	for(unsigned int i = 0; i < num; i++)
	{
		V[i] = i;
	}
 
	std::vector<unsigned int>::iterator it = find(V.begin(), V.end(), 7);
	if(it == V.end())
	{
		std::cout << "Could not find 7 in the vector"  << std::endl;
	}
	else
	{
		std::cout  << "Have found 7 in the vector"  << std::endl;
		std::cout << "The number 7 is located at index " << it - V.begin() << std::endl;
	}
 
 
	std::vector<unsigned int>::iterator it2 = find(V.begin(), V.end(), 15);
	if(it2 == V.end())                 
    {
		std::cout  << "Could not find 15 in the vector"  << std::endl;
    }
	else                                
    {
		std::cout  << "Have found 15 in the vector"  << std::endl;
    }
 
}
 
void TestInsert()
{
 std::vector <double> a;
 a.push_back(1);
 a.push_back(2);
 
 std::vector <double> b;
 b.push_back(3);
 b.push_back(4);
 
 std::vector<double> c;
 
 c.insert(c.end(), a.begin(), a.end());
 c.insert(c.end(), b.begin(), b.end());
 
 for(unsigned i = 0; i < c.size(); i++)
 {
     std::cout << c[i] << " ";
 }
 
 std::cout << std::endl;
 
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
 
Project(Vector)
 
ADD_EXECUTABLE(Vector Vector.cpp)