回答編集履歴
3
追記0を削除
answer
CHANGED
@@ -49,45 +49,35 @@
|
|
49
49
|
|
50
50
|
(追記: この部分の追記はどちらかといえばオブジェクト関係ですが、データ構造とアルゴリズムにもかかっているので書きました)
|
51
51
|
|
52
|
+
(追記の追記: Zuishinさんからご指摘をいただきました。見当違いなので、打消し線で削除します。)
|
53
|
+
|
52
|
-
あ、そうそう。忘れてましたが、「データ構造」はC++以降の言語にはすでに備わっています。
|
54
|
+
~~あ、そうそう。忘れてましたが、「データ構造」はC++以降の言語にはすでに備わっています。
|
53
55
|
(ライブラリ側だろうけど。)
|
54
|
-
|
55
56
|
確かに名称は若干違ったり、PythonとかVBAとかみたいな言語だと、
|
56
57
|
C言語とかだと配列として扱われるのが「リスト構造」だったり...と差があるようですが、
|
57
|
-
|
58
58
|
何かしらのもので提供されています。
|
59
|
+
C++でいえば、~~
|
59
60
|
|
60
|
-
C++でいえば、
|
61
|
-
|
62
|
-
ベクター: std::vector
|
61
|
+
~~ベクター: std::vector
|
63
62
|
リスト構造: std::list
|
64
63
|
スタック構造: std::stack
|
65
|
-
|
64
|
+
~~
|
66
|
-
という具合に。
|
65
|
+
~~という具合に。
|
67
|
-
|
68
66
|
だから不要といえば不要。
|
69
|
-
|
70
67
|
でも、「データ構造とアルゴリズム」を学ぶことで**使い分け**がわかるようになりますよ。
|
71
|
-
|
72
68
|
例えば、初心者に多いだろうと思うものが、
|
73
|
-
|
74
69
|
「std::vectorとstd::listの違いって何? 同じように使えるけど?」
|
75
|
-
|
76
70
|
という感じでしょうか。
|
77
|
-
|
78
71
|
でもデータ構造とアルゴリズムがわかっているなら、
|
72
|
+
~~
|
79
73
|
|
80
|
-
```ここに言語を入力
|
81
|
-
ベクター: 動的配列。最後尾に追加していくのは得意だが、途中( (N-1)≦i≧0 ) に追加したり削除したりするのは不得意。できなくもないが、さらに別のベクターを用意して...みたいな無駄が出てくる。
|
74
|
+
~~ベクター: 動的配列。最後尾に追加していくのは得意だが、途中( (N-1)≦i≧0 ) に追加したり削除したりするのは不得意。できなくもないが、さらに別のベクターを用意して...みたいな無駄が出てくる。
|
82
75
|
また、ランダムアクセスが得意。
|
83
|
-
|
84
76
|
リスト: リスト構造。C言語で言えば自身のポインタを持った構造体でつなげていく方式。
|
85
|
-
よって、途中( (N-1)≦i≧0 )の追加や削除が得意。ただし、ランダムアクセスが苦手。
|
77
|
+
よって、途中( (N-1)≦i≧0 )の追加や削除が得意。ただし、ランダムアクセスが苦手。~~
|
86
|
-
```
|
87
78
|
|
88
|
-
というのが解れば、自分がやりたい処理から考えることができる。
|
89
79
|
|
80
|
+
~~というのが解れば、自分がやりたい処理から考えることができる。
|
90
81
|
もしランダムアクセスが不要だけど途中追加や削除を頻繁に行うならリスト構造( C++でいうならstd::list ) 、途中追加とかは不要だけどランダムアクセスをすることがあるならベクター( C++でいうならstd::vector )...
|
91
82
|
という風に使い分けができる。
|
92
|
-
|
93
|
-
そういう、「弱みや強みを理解し、使い分けができる」っていう利点もあるっちゃあるね。
|
83
|
+
そういう、「弱みや強みを理解し、使い分けができる」っていう利点もあるっちゃあるね。~~
|
2
修正0 for 0
answer
CHANGED
@@ -47,6 +47,8 @@
|
|
47
47
|
|
48
48
|
[追記0]
|
49
49
|
|
50
|
+
(追記: この部分の追記はどちらかといえばオブジェクト関係ですが、データ構造とアルゴリズムにもかかっているので書きました)
|
51
|
+
|
50
52
|
あ、そうそう。忘れてましたが、「データ構造」はC++以降の言語にはすでに備わっています。
|
51
53
|
(ライブラリ側だろうけど。)
|
52
54
|
|
1
追記0
answer
CHANGED
@@ -41,4 +41,51 @@
|
|
41
41
|
|
42
42
|
いろんな話を聞いて、「いろんな人がいるんだなぁ」「この人はこういう風に切り抜けてきたんだぁ」っていう感じでしょうか。
|
43
43
|
|
44
|
-
つ [考え?](http://blog.livedoor.jp/crackstars/archives/770888.html)
|
44
|
+
つ [考え?](http://blog.livedoor.jp/crackstars/archives/770888.html)
|
45
|
+
|
46
|
+
---
|
47
|
+
|
48
|
+
[追記0]
|
49
|
+
|
50
|
+
あ、そうそう。忘れてましたが、「データ構造」はC++以降の言語にはすでに備わっています。
|
51
|
+
(ライブラリ側だろうけど。)
|
52
|
+
|
53
|
+
確かに名称は若干違ったり、PythonとかVBAとかみたいな言語だと、
|
54
|
+
C言語とかだと配列として扱われるのが「リスト構造」だったり...と差があるようですが、
|
55
|
+
|
56
|
+
何かしらのもので提供されています。
|
57
|
+
|
58
|
+
C++でいえば、
|
59
|
+
|
60
|
+
ベクター: std::vector
|
61
|
+
リスト構造: std::list
|
62
|
+
スタック構造: std::stack
|
63
|
+
|
64
|
+
という具合に。
|
65
|
+
|
66
|
+
だから不要といえば不要。
|
67
|
+
|
68
|
+
でも、「データ構造とアルゴリズム」を学ぶことで**使い分け**がわかるようになりますよ。
|
69
|
+
|
70
|
+
例えば、初心者に多いだろうと思うものが、
|
71
|
+
|
72
|
+
「std::vectorとstd::listの違いって何? 同じように使えるけど?」
|
73
|
+
|
74
|
+
という感じでしょうか。
|
75
|
+
|
76
|
+
でもデータ構造とアルゴリズムがわかっているなら、
|
77
|
+
|
78
|
+
```ここに言語を入力
|
79
|
+
ベクター: 動的配列。最後尾に追加していくのは得意だが、途中( (N-1)≦i≧0 ) に追加したり削除したりするのは不得意。できなくもないが、さらに別のベクターを用意して...みたいな無駄が出てくる。
|
80
|
+
また、ランダムアクセスが得意。
|
81
|
+
|
82
|
+
リスト: リスト構造。C言語で言えば自身のポインタを持った構造体でつなげていく方式。
|
83
|
+
よって、途中( (N-1)≦i≧0 )の追加や削除が得意。ただし、ランダムアクセスが苦手。
|
84
|
+
```
|
85
|
+
|
86
|
+
というのが解れば、自分がやりたい処理から考えることができる。
|
87
|
+
|
88
|
+
もしランダムアクセスが不要だけど途中追加や削除を頻繁に行うならリスト構造( C++でいうならstd::list ) 、途中追加とかは不要だけどランダムアクセスをすることがあるならベクター( C++でいうならstd::vector )...
|
89
|
+
という風に使い分けができる。
|
90
|
+
|
91
|
+
そういう、「弱みや強みを理解し、使い分けができる」っていう利点もあるっちゃあるね。
|