mkdir ~/mis2を実行する. http://opendatastructures.orgのc++ edition, c++ sources ( http://opendatastructures.org/ods-cpp.tgz ) からダウンロードしたファイルをホームフォルダの下のmis2に置く.ods.cpp.tgzというファイルができた時は,
cd ~/mis2 tar zxvf ods-cpp.tgzods-cpp.tarというファイルができた時は,
cd ~/mis2 tar xvf ods-cpp.tarを実行するとcppというフォルダができる.Finderからダブルクリックしてもアーカイブユーティリティが立ち上がり展開されるので,そちらでも良い.
#include "array.h" #include <iostream> int main(){ int n; std::cin >> n; ods::array<int> a(n); for (int i = 0; i < n; i++){ a[i] = i * i; } for (int m; std::cin >> m && m > 0;){ if (m < n){ std::cout << a[m] << std::endl; } } return 0; }これは,最初に入力した大きさの配列aを作り,n番目の中身をn*nで埋め,その後, 入力されたmが正の間,aのm番目の要素を返すだけのプログラムである. これを,
cd ~/mis2/cpp g++-mp-4.8 -o arrayTest -std=c++11 -o arrayTest arrayTest.cpp array.cppでコンパイルし,
./arrayTestで実行
100 2 5 88 0のような入力を与えて実行してみる.
#include "ArrayStack.h" #include <iostream> int main(){ int n = 100; ods::ArrayStack<int> as; for (int i = 0; i < n; i++){ as.add(i, i); } as.set(88, 199); as.add(87, 133); std::cout << as.remove(98) << std::endl; for (int i = 0; i < 80; i++){ std::cout << "removed = " << as.remove(0) << std::endl; } for (int i = 0; i < as.size(); i++){ std::cout << "as.get(" << i << ")=" << as.get(i) << std::endl; } return 0; }
cd ~/mis2/cpp g++-mp-4.8 -o arrayStackTest -std=c++11 -o arrayStackTest arrayStackTest.cpp ArrayStack.cppでコンパイルし,
./arrayStackTestで実行
cd ~/mis2/cpp g++-mp-4.8 -o fastArrayStackTest -std=c++11 -o fastArrayTest fastArrayStackTest.cpp FastArrayStack.cppでコンパイルし,
./fastArrayStackTestで実行する.
~/mis2/cpp 以下にarrayQueueTest.cpp というファイルを作成する.
#include "ArrayQueue.h" #include <iostream> int main(){ int n = 10; ods::ArrayQueue<int> aq; for (int i = 0; i < n; i++){ aq.add(i); } for (int i = 0; i < n * 10; i++){ std::cout << aq.remove() << std::endl; aq.add(i * i); } return 0; }
cd ~/mis2/cpp g++-mp-4.8 -o arrayQueueTest -std=c++11 -o arrayQueueTest arrayQueueTest.cpp ArrayQueue.cppでコンパイルし,
./arrayQueueTestで実行する.
#include "ArrayDeque.h" #include <iostream> int main(){ int n = 10; ods::ArrayDeque<int> aq; for (int i = 0; i < n; i++){ aq.add(i, i); } for (int i = 0; i < n; i++){ aq.add(i, -i); aq.remove(0); aq.set(i, i * i); } for (int i = 0; i < aq.size(); i++){ std::cout << aq.get(i) << std::endl; } return 0; }
cd ~/mis2/cpp g++-mp-4.8 -o arrayDequeTest -std=c++11 -o arrayDequeTest arrayDequeTest.cpp ArrayDeque.cppでコンパイルし,
./arrayDequeTestで実行する.
cd ~/mis2/cpp g++-mp-4.8 -o dualArrayDequeTest -std=c++11 -o dualArrayDequeTest dualArrayDequeueTest.cpp DualAraryDeque.cppでコンパイルし,
./dualArrayDequeで実行する.