// vec.java  -- Vector in Java, @CopyLeft by tsaiwn@csie.nctu.edu.tw
// Vector 就是必要時會自己長大的 array; In Java, Stack extends Vector
import java.util.*;
import java.io.*;
class vec {
   public static void main(String xx[ ]) { new vec( ); }
  PrintStream cout = System.out;
  Vector<Integer> x = new Vector<Integer>();    // 來個 整數 vector :-) 
  Vector<Integer> y = new Vector<Integer> (3); 
                // y is a 整數 Integer Vector of capacity 3
          //注意 Java 不可以 Vector<int>  但是 C++ STL 可以 vector<int>
  //vector<int> *pv = new vector<int>(8);  // Java has no pointer
 vec( ) {  main( ); }
 int main( ) {    // the original main( ) in C/C++
   cout.print("Vector x.capacity = " + x.capacity( )+ ";  ");
   cout.println("Vector y.capacity = " + y.capacity( ));
   cout.println("==calling test( )" );
   test( ); cout.print("=== bye ===\n");
   return 0;
 }//main( )
void test( ) {
   for(int i=1; i <= 18; ++i) {
      x.add(i);   // x.push_back(i);
      cout.print("add " + i + ", size: " + x.size( ) );
      cout.println(", capacity: " + x.capacity( ) );
   }
   cout.printf("=== ALL in x: ");
   for(int i=0; i < x.size( ); ++i)  
       cout.printf("%d ", (int)x.get(i));
   cout.printf("\n");
   // use iterator to traverse x
   cout.printf("=== ALL in x through an iterator:\n      ");
   Iterator<Integer>  p = x.iterator( );
   for( ; p.hasNext( ) ; ) cout.printf("%d ", (int)p.next( ) );
   cout.printf("\n");
}//test(
}//class
/******  注意 Java 的 Vector default capacity 是 10; 但 C++ STL 的是 0
D:\COURSE\OOP\ppnt>javac vec.java

D:\COURSE\OOP\ppnt>java vec
Vector x.capacity = 10;  Vector y.capacity = 3
==calling test( )
add 1, size: 1, capacity: 10
add 2, size: 2, capacity: 10
add 3, size: 3, capacity: 10
add 4, size: 4, capacity: 10
add 5, size: 5, capacity: 10
add 6, size: 6, capacity: 10
add 7, size: 7, capacity: 10
add 8, size: 8, capacity: 10
add 9, size: 9, capacity: 10
add 10, size: 10, capacity: 10
add 11, size: 11, capacity: 20
add 12, size: 12, capacity: 20
add 13, size: 13, capacity: 20
add 14, size: 14, capacity: 20
add 15, size: 15, capacity: 20
add 16, size: 16, capacity: 20
add 17, size: 17, capacity: 20
add 18, size: 18, capacity: 20
=== ALL in x: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
=== ALL in x through an iterator:
      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
=== bye ===

D:\COURSE\OOP\ppnt>
*****************************************/
