vectorについてです。
以前、配列に入る要素に応じて大きさが変化するようにプログラムを作りたい!という質問をしました。
C言語について
stringですね。
要するにバッファオーバーフローが起きないと言うと分かりやすいですかね。
一方vectorの方も動的配列で、要素数が成長していくようです。
つまり!要素数がどんどん自動的に増えてくれるんだ!!すげぇ!と思っていまいた。
試してみました。あえてC言語を混ぜてみました。
C++
1#include<iostream> 2#include<vector> 3 4using namespace std; 5 6int main(){ 7 vector<char> str(3, 0); 8 char *buf = &str[0]; 9 10 vector<int> gtr(10, 0); 11 12 scanf("%s", buf); // vectorをそのまま渡せないのでポインタで渡す。 13 printf("%s\n", buf); 14 15 16 for(int i = 0; i < 20; i++) 17 gtr[i] = i; 18 19 for(int i = 0; i < 20; i++) 20 cout << gtr[i]; 21 putchar('\n'); 22 23 return 0; 24}
strにはscanf()で要素よりも大きな文字列を代入させます。
gtrにも要素数よりも大きな数字列を代入させます。
segmentation fault それから abortになります。
あれえぇ?? 勝手に増えてくれないのかな???
vectorの使い方間違っていますかね??
insertやpush_back,resizeでないと大きくなってくれないんですかね??
これのどこが動的なのでしょうか??
またC++の中stringやvector以外で配列の要素が増えていくものってありますか??
お願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/29 15:01
2017/12/29 15:07
2017/12/29 15:08 編集
2017/12/29 15:10 編集
2017/12/29 15:12
2017/12/29 15:20 編集
2017/12/29 15:20
2017/12/29 15:23 編集
2017/12/29 15:26 編集
2017/12/29 15:29
2017/12/29 15:32
2017/12/29 15:35
2017/12/29 15:55
2017/12/29 16:23
2017/12/30 07:09