コード例 #1
0
ファイル: copy.cpp プロジェクト: exuuwen/study
int main () {

  	int myints[]={10, 20, 30, 40, 50, 60, 70};
	std::vector<int> myvector(7);
	std::vector<int> myvector2(5);

	//copy 不能插入空的容器中
	std::copy(myints, myints+7, myvector.begin()); //reverse_copy
	std::cout << "myvector contains:";
	for (auto item : myvector)
		std::cout << item << " ";
	std::cout <<std::endl;

	std::copy_n(myints, 5, myvector2.begin());
	std::cout << "myvector2 contains:";
	for (auto item : myvector2)
		std::cout << item << " ";
	std::cout <<std::endl;

	std::vector<int> foo = {25, 15, 5, -5, -15};
	std::vector<int> bar(foo.size());

	// copy only positive numbers:
	auto it = std::copy_if(foo.begin(), foo.end(), bar.begin(), function); 
	bar.resize(std::distance(bar.begin(), it));  // shrink container to new size

	std::cout << "bar contains:";
	for (auto x: bar) 
		std::cout << x << " ";
	std::cout << std::endl;

  	std::vector<int> a;

	for (int i=1; i<10; ++i) a.push_back(i);   // 1 2 3 4 5 6 7 8 9
	std::reverse(a.begin(), a.end());    // 9 8 7 6 5 4 3 2 1
	std::cout << "a contains:";
	for (auto x: a) 
		std::cout << x << " ";
	std::cout << std::endl;

  	return 0;
}
コード例 #2
0
ファイル: main.cpp プロジェクト: Jasonhcwong/blog
int main(void)
{
/***************************** Natrual Syntax ********************************/
  Base a;
  Base b;
  Base c;
  Derived aa;

  // test ordinary function
  functor<void( ) > g0(&test0);
  g0();

  functor<double (double)> g1;
  g1 = &test1;
  assert(12.123 == g1(12.123));

  // test member function
  functor<void (int)> g2(&Base::d);
  functor<int (int)> g3(&Base::static_b);
  functor<int (int, int, int, int, int, int, int, int, int)> g4(&Base::d9);
  functor<int (int)> g5(&Base::virtual_c);
  // operator =
  functor<int (int, int)> g6;
  g6 = &Derived::Derived_a2; 

  functor<int (int)> g7(&Derived::virtual_c);
  // copy constructor
  functor<int (int)> g7_2;
  g7_2 = g7;
  functor<int (int)> g7_3(g7);
  // reference 
  functor<int (int)> &g7_4 = g7;
  // pointer 
  functor<int (int)> *g7_5 = &g7;


  g2(&a, 18);
  assert(18 == a.getBase());
  assert(g3(29) == 29);
  assert(g4(&b, 1,2,3,4,5,6,7,8,9) == (1+2+3+4+5+6+7+8+9));
  assert(g5(&c, 5) == 5);
  assert(g6(&aa, 5, 6) == 5+6);
  assert(g7(&aa, 6) == 10+6);
  assert(g7_2(&aa, 6) == 10+6);
  assert(g7_3(&aa, 6) == 10+6);
  assert(g7_4(&aa, 6) == 10+6);
  assert((*g7_5)(&aa, 6) == 10+6);

/************************************* STL *************************************/
  int myints[] = {32,71,12,45,26,80,53,33};
  std::vector<int> myvector1(myints, myints+8);
  std::vector<int> myvector2(myints, myints+8);

  functor<bool (int, int)> functorCmp = &mycmp;

  std::sort(myvector1.begin(), myvector1.end());
  std::sort(myvector2.begin(), myvector2.end(), functorCmp);

  assert(myvector1.size() == myvector2.size());
  for (unsigned int i = 0; i < myvector1.size(); ++i) {
    assert(myvector1[i] == myvector2[i]);
  }

/***************************** Performance Test ********************************/
//  performanceTest (500000000);

  return 0;
}
コード例 #3
0
ファイル: main.cpp プロジェクト: rroa/stl-vector
int main()
{
	/*raulroa::Vector<double> point3d( 8 );
	point3d[0] = 2.3;
	point3d[1] = 3.2;
	point3d[2] = 4.2;
	point3d[3] = 3.5;
	point3d[4] = 12.5;
	point3d[5] = 15.5;
	point3d[6] = 14.5;
	point3d[7] = 18.5;


	std::cout << "empty?: " << point3d.empty() << std::endl;
	std::cout << "size: " << point3d.size() << std::endl;
	std::cout << "capacity: " << point3d.capacity() << std::endl;
	std::cout << "max_size: " << point3d.max_size() << std::endl;

	std::cout << "INSERTING!" << std::endl;

	raulroa::Vector<double>::iterator i, j;
	i = point3d.begin();
	j = point3d.end();
	i = point3d.insert( i + 3, 10.0 );

	for(raulroa::Vector<double>::iterator i = point3d.begin(); i != point3d.end(); ++i)
	{
		std::cout << *i << std::endl;
	}
	
	std::cout << "empty?: " << point3d.empty() << std::endl;
	std::cout << "size: " << point3d.size() << std::endl;
	std::cout << "capacity: " << point3d.capacity() << std::endl;
	std::cout << "max_size: " << point3d.max_size() << std::endl;

	std::cout << "STD VECTOR!" <<std::endl;
	
	std::vector<double> points( 8 );
	points[0] = 2.3;
	points[1] = 3.2;
	points[2] = 4.2;
	points[3] = 3.5;
	points[4] = 12.5;
	points[5] = 15.5;
	points[6] = 14.5;
	points[7] = 18.5;


	std::cout << "empty?: " << points.empty() << std::endl;
	std::cout << "size: " << points.size() << std::endl;
	std::cout << "capacity: " << points.capacity() << std::endl;
	std::cout << "max_size: " << points.max_size() << std::endl;

	std::cout << "INSERTING!" << std::endl;

	std::vector<double>::iterator k, m;
	k = points.begin();
	m = points.end();
	k = points.insert( k + 3, 10.0 );

	for(std::vector<double>::iterator i = points.begin(); i != points.end(); ++i)
	{
		std::cout << *i << std::endl;
	}

	std::cout << "empty?: " << points.empty() << std::endl;
	std::cout << "size: " << points.size() << std::endl;
	std::cout << "capacity: " << points.capacity() << std::endl;
	std::cout << "max_size: " << points.max_size() << std::endl;*/

	//raulroa::Vector<double> point3d( 10 );
	//for( int i = 1; i <= 10; ++i )
	//{
	//	point3d[ i - 1 ] = i;
	//}

	//std::cout << "empty?: " << point3d.empty() << std::endl;
	//std::cout << "size: " << point3d.size() << std::endl;
	//std::cout << "capacity: " << point3d.capacity() << std::endl;
	//std::cout << "max_size: " << point3d.max_size() << std::endl;

	//// erase the 6th element
	//point3d.erase ( point3d.begin() + 0 );

	//// erase the first 3 elements:
	//point3d.erase (point3d.begin(),point3d.begin()+3);

	//std::cout << "myvector contains:";
	//for (unsigned i=0; i<point3d.size(); ++i)
	//	std::cout << ' ' << point3d[i];
	//std::cout << '\n';

	//std::cout << "empty?: " << point3d.empty() << std::endl;
	//std::cout << "size: " << point3d.size() << std::endl;
	//std::cout << "capacity: " << point3d.capacity() << std::endl;
	//std::cout << "max_size: " << point3d.max_size() << std::endl;

	//std::cout << "STD VECTOR!" <<std::endl;

	//std::vector<int> myvector;

	//// set some values (from 1 to 10)
	//for (int i=1; i<=10; i++) myvector.push_back(i);

	//std::cout << "empty?: " << myvector.empty() << std::endl;
	//std::cout << "size: " << myvector.size() << std::endl;
	//std::cout << "capacity: " << myvector.capacity() << std::endl;
	//std::cout << "max_size: " << myvector.max_size() << std::endl;

	//// erase the 6th element
	//myvector.erase (myvector.begin()+0);

	//// erase the first 3 elements:
	//myvector.erase (myvector.begin(),myvector.begin()+3);

	//std::cout << "myvector contains:";
	//for (unsigned i=0; i<myvector.size(); ++i)
	//	std::cout << ' ' << myvector[i];
	//std::cout << '\n';

	//std::cout << "empty?: " << myvector.empty() << std::endl;
	//std::cout << "size: " << myvector.size() << std::endl;
	//std::cout << "capacity: " << myvector.capacity() << std::endl;
	//std::cout << "max_size: " << myvector.max_size() << std::endl;

	/*raulroa::Vector<int> mypoints;
	int sum1 (0);
	
	std::cout << "empty?: " << mypoints.empty() << std::endl;
	std::cout << "size: " << mypoints.size() << std::endl;
	std::cout << "capacity: " << mypoints.capacity() << std::endl;
	std::cout << "max_size: " << mypoints.max_size() << std::endl;

	mypoints.push_back (100);
	mypoints.push_back (200);
	mypoints.push_back (300);

	std::cout << "empty?: " << mypoints.empty() << std::endl;
	std::cout << "size: " << mypoints.size() << std::endl;
	std::cout << "capacity: " << mypoints.capacity() << std::endl;
	std::cout << "max_size: " << mypoints.max_size() << std::endl;

	while (!mypoints.empty())
	{
		sum1+=mypoints.back();
		mypoints.pop_back();
	}

	std::cout << "The elements of myvector add up to " << sum1 << '\n';

	std::cout << "empty?: " << mypoints.empty() << std::endl;
	std::cout << "size: " << mypoints.size() << std::endl;
	std::cout << "capacity: " << mypoints.capacity() << std::endl;
	std::cout << "max_size: " << mypoints.max_size() << std::endl;

	std::cout << "==================================================" << std::endl;
	std::cout << "STD VECTOR!" << std::endl;
	std::cout << "==================================================" << std::endl;

	std::vector<int> myvector;
	std::cout << "empty?: " << myvector.empty() << std::endl;
	std::cout << "size: " << myvector.size() << std::endl;
	std::cout << "capacity: " << myvector.capacity() << std::endl;
	std::cout << "max_size: " << myvector.max_size() << std::endl;
	int sum (0);
	myvector.push_back (100);
	myvector.push_back (200);
	myvector.push_back (300);
	
	std::cout << "empty?: " << myvector.empty() << std::endl;
	std::cout << "size: " << myvector.size() << std::endl;
	std::cout << "capacity: " << myvector.capacity() << std::endl;
	std::cout << "max_size: " << myvector.max_size() << std::endl;

	while (!myvector.empty())
	{
		sum+=myvector.back();
		myvector.pop_back();
	}

	std::cout << "empty?: " << myvector.empty() << std::endl;
	std::cout << "size: " << myvector.size() << std::endl;
	std::cout << "capacity: " << myvector.capacity() << std::endl;
	std::cout << "max_size: " << myvector.max_size() << std::endl;
	
	std::cout << "The elements of myvector add up to " << sum << '\n';*/

//raulroa::Vector<int>::size_type sz;
//
//raulroa::Vector<int> foo;
//sz = foo.capacity();
//std::cout << "making foo grow:\n";
//for (int i=0; i<100; ++i) {
//	foo.push_back(i);
//	if (sz!=foo.capacity()) {
//		sz = foo.capacity();
//		std::cout << "capacity changed: " << sz << '\n';
//	}
//}
//
//raulroa::Vector<int> bar;
//sz = bar.capacity();
//bar.reserve(100);   // this is the only difference with foo above
//std::cout << "making bar grow:\n";
//for (int i=0; i<100; ++i) {
//	bar.push_back(i);
//	if (sz!=bar.capacity()) {
//		sz = bar.capacity();
//		std::cout << "capacity changed: " << sz << '\n';
//	}
//}

//raulroa::Vector<int> myvector;
//
//// set some initial content:
//for (int i=1;i<10;i++) myvector.push_back(i);
//
//myvector.resize(5);
//myvector.resize(8,100);
//myvector.resize(12);
//
//std::cout << "myvector contains:";
//for (int i=0;i<myvector.size();i++)
//	std::cout << ' ' << myvector[i];
//std::cout << '\n';


	raulroa::Vector<int> myvector( 1000 );
	/*for (int i=1;i<10;i++) myvector1.push_back(i);

	raulroa::Vector<int> myvector2 = myvector1;
	myvector2[0] = 12;

	std::cout << "Are the same? " << ( myvector2 == myvector1 ) << std::endl;

	myvector1 = myvector2;
	std::cout << "Are the same? " << ( myvector2 == myvector1 ) << std::endl;

	std::cout << "myvector contains:";
	for (int i=0;i<myvector1.size();i++)
		std::cout << ' ' << myvector1[i];
	std::cout << '\n';

	for (int i=0;i<myvector2.size();i++)
		std::cout << ' ' << myvector2[i];
	std::cout << '\n';
*/

	/*std::cout << "empty?: " << myvector.empty() << std::endl;
	std::cout << "size: " << myvector.size() << std::endl;
	std::cout << "capacity: " << myvector.capacity() << std::endl;
	std::cout << "max_size: " << myvector.max_size() << std::endl;

	myvector.erase( myvector.begin() + 200, myvector.begin() + 600 );

	std::cout << "empty?: " << myvector.empty() << std::endl;
	std::cout << "size: " << myvector.size() << std::endl;
	std::cout << "capacity: " << myvector.capacity() << std::endl;
	std::cout << "max_size: " << myvector.max_size() << std::endl;

	myvector.resize( myvector.size() / 2 );

	std::cout << "empty?: " << myvector.empty() << std::endl;
	std::cout << "size: " << myvector.size() << std::endl;
	std::cout << "capacity: " << myvector.capacity() << std::endl;
	std::cout << "max_size: " << myvector.max_size() << std::endl;

	myvector.clear();

	std::cout << "empty?: " << myvector.empty() << std::endl;
	std::cout << "size: " << myvector.size() << std::endl;
	std::cout << "capacity: " << myvector.capacity() << std::endl;
	std::cout << "max_size: " << myvector.max_size() << std::endl;
*/

	raulroa::Vector<int> myvector2( myvector );

	std::cout << "empty?: " << myvector.empty() << std::endl;
	std::cout << "size: " << myvector.size() << std::endl;
	std::cout << "capacity: " << myvector.capacity() << std::endl;
	std::cout << "max_size: " << myvector.max_size() << std::endl;

	std::cout << "empty?: " << myvector2.empty() << std::endl;
	std::cout << "size: " << myvector2.size() << std::endl;
	std::cout << "capacity: " << myvector2.capacity() << std::endl;
	std::cout << "max_size: " << myvector2.max_size() << std::endl;

	std::cin.get();
	
	return 0;
}