1-3次元配列のベクトルによる書き方
1, 2, 3次元をそれぞれ vec, mat, tns と書く。
vecmac.cpp
template<typename T> using vec = std::vector<T>;
template<typename T> using mat = std::vector<std::vector<T> >;
template<typename T> using tns = std::vector<std::vector<std::vector<T> > >;
初期化
1次元の場合
vecinit.cpp
std::vector<int> a = {0, 10, 5}; // c++11
vec<double> res(n, 0.0); // initialize a vector with 0.0
vec<X> res(n); // initialize a vector with n elements
複数次元(3次元 x, y, z)の場合
tnsinit.cpp
tns<double> alpha = vec<vec<vec<double>>>(x, vec<vec<double>>(y, vec<double>(z, 0.0)));
要素の追加と削除
ソートされたベクトル v に順序を保ったまま、要素の削除と追加を行う例
vector<int>::iterator p;
vector<int> v, arr;
sort(v.begin(), v.end());
for (int i = 0; i < n - d; i++) {
// delete arr[i] from v
p = lower_bound(v.begin(), v.end(), arr[i]);
v.erase(p);
// insert arr[i+d] into v
p = lower_bound(v.begin(), v.end(), arr[i + d]);
trail.insert(p, arr[i + d]);
}
p = lower_bound(v.begin(), v.end(), a) は指定された値 a 以上の最初の要素を指すイテレータが入る。