C++/C#/JAVA コレクション比較 【インデックスによる要素アクセス】
std::vector [VC++2003]
System.Collections.Generic.List(T) [C#2008 Express Edition]
java.util.ArrayList [J2SE 1.6.0_03]
以上のコレクション(コンテナ)の使い方比較。(自分の知識を整理するためのメモです。)
テーマ【配列のようにインデックスによる要素アクセス】
コレクション(コンテナ)変数の宣言
C++の場合
std::vector<A> al;
C#の場合
List<A> al = new List<A>();
JAVAの場合
ArrayList<A> al = new ArrayList<A>();
以下の例でコレクション(コンテナ)は上記の様に宣言されているとする。
また、C++/C#/JAVAどの言語においてもインデックスの範囲は 0 ~ (要素数-1) である。
インデックスによる要素アクセス法
C++の場合
al[インデックス].Aのメンバー
C#の場合
al[インデックス].Aのメンバー
JAVAの場合
al.get(インデックス).Aのメンバー
範囲外アクセス
C++の場合
未定義(「例外」ではない。異常値を返したりプログラムが異常停止)
C#の場合
System.ArgumentOutOfRangeException例外
JAVAの場合
java.lang.IndexOutOfBoundsException例外
インデックスで指し示した要素の置き換え
C++の場合
al[インデックス] = A(....);
C#の場合
al[インデックス] = new A(....);
JAVAの場合
al.set(インデックス, new A(....));
(注:戻り値は指定された位置に以前あった要素)
インデックスの位置に要素をコレクション追加
元々インデックスの位置にあった要素とそれ以降の要素を後ろにずらす。
C++の場合
for (it=al.begin(), i=0; it != al.end(); it++, i++){
if (i == インデックス){
al.insert(it, A(....));
break;
}
}
C#の場合
al.Insert(インデックス, new A(....));
(注:O(n)操作, n=Count)
JAVAの場合
al.add(インデックス, new A(....));
インデックスで指し示した要素をコレクションから削除
C++の場合
for (it=al.begin(), i=0; it != al.end(); it++, i++){
if (i == インデックス){
al.erase(it);
break;
}
}
C#の場合
al.RemoveAt(インデックス);
(注:O(n)操作, n=Count-インデックス)
JAVAの場合
al.remove(インデックス);
« C++/C#/JAVA コレクション比較 【列挙しながら要素削除】 | トップページ | C++/C#/JAVA コレクション比較 【ハッシュテーブルの比較概要】 »
「パソコン・インターネット」カテゴリの記事
- トップページにTooltip (jQueryを使ったオリジナル)(2008.12.20)
- JAVAのハッシュテーブル HashMap(2008.12.15)
- C#のハッシュテーブル Dictionary(2008.12.15)
- C++/C#/JAVA コレクション比較 【ハッシュテーブルの比較概要】(2008.12.12)
- C++/C#/JAVA コレクション比較 【インデックスによる要素アクセス】(2008.12.10)
« C++/C#/JAVA コレクション比較 【列挙しながら要素削除】 | トップページ | C++/C#/JAVA コレクション比較 【ハッシュテーブルの比較概要】 »
コメント