🌻天国にいけるC++言語入門🌻 進化し続けるオブジェクト指向プログラミング ver3.2307
別のクラステンプレートの型で用いられているイテレータに 別のクラステンプレートの型で用いられているイテレータを 代入することはできません
別のクラステンプレートの型で用いられているイテレータに 別のクラステンプレートの型で用いられているイテレータを 代入することはできません
ソーラー「
では再び
vector型のクラステンプレート
と
array型のクラステンプレート
の両方を用いて
数値データをメモリに格納する
プログラムを実行してみたいと思います」
そのプログラムはこちらです
👇
#include <iostream>
#include <vector>//🌞ヘッダファイル<vector>をインクルードするのを忘れずに!
#include <array>🌞ヘッダファイル<array>をインクルードするのを忘れずに!
using namespace std;
int main() {
vector<int> a = { 1,2,3 };
vector<int>::iterator itr1 = a.begin();
cout << *itr1 << "\n";
cout << &*itr1 << "\n";
array<int,3> b = { 4,5,6 };
array<int,3>::iterator itr2 = b.begin();
cout << *itr2 << "\n";
cout << &*itr2 << "\n";
return 0;
}
プログラムの実行結果
1
00DBE498
4
008FF828
ソーラー「
vector型のクラステンプレート
を用いて
数値データ1をメモリに格納しました
数値データ1を格納したメモリのアドレスは
00DBE498
です🌞
array型のクラステンプレート
を用いて
数値データ4をメモリに格納しました
数値データ4を格納したメモリのアドレスは
008FF828
ですね🌞」
マックス「もしかして
vector<int> a = { 1,2,3 };
vector<int>::iterator itr1 = a.begin();
を実行すると
イテレータitr1には
数値データ1を格納しているメモリのアドレスが代入されるのなら
array<int,3> b = { 4,5,6 };
array<int,3>::iterator itr2 = itr1;
👆ここに注目
を実行し
itr2をitr1で初期化したら
itr2に
数値データ1を格納しているメモリのアドレスを代入できるんじゃないか?」
ソーラー「それもそうですね
それでは
早速そのプログラムを実行してみたいと思います
そのプログラムはこ・ち・ら💖
👇
#include <iostream>
#include <vector>
#include <array>
using namespace std;
int main() {
vector<int> a = { 1,2,3 };
vector<int>::iterator itr1 = a.begin();
cout << *itr1 << "\n";
cout << itr1 << "\n";
array<int,3> b = { 4,5,6 };
array<int, 3>::iterator itr2 = itr1;
cout << *itr2 << "\n";
cout << itr2 << "\n";
return 0;
}
ビルド実行結果
エラー C2679 二項演算子 '<<': 型 'std::_Vector_iterator<std::_Vector_val<std::_Simple_types<_Ty>>>' の右オペランドを扱う演算子が見つかりません (または変換できません)。
エラー C2679 二項演算子 '<<': 型 'std::_Array_iterator<_Ty,3>' の右オペランドを扱う演算子が見つかりません (または変換できません)。
エラー (アクティブ) E0349 これらのオペランドと一致する演算子 "<<" はありません
エラー (アクティブ) E0349 これらのオペランドと一致する演算子 "<<" はありません
エラー C2440 '初期化中': 'std::_Vector_iterator<std::_Vector_val<std::_Simple_types<_Ty>>>' から 'std::_Array_iterator<_Ty,3>' に変換できません。
エラー (アクティブ) E0312 "std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int>>>" から "std::_Array_iterator<int, 3U>" への適切なユーザー定義変換が存在しません
ソーラー「ははあ
成程
vector<int>型のイテレータitr1で
array<int, 3>>型のイテレータitr2
を初期化することはできないんだね
つまり
別のクラステンプレートの型で用いられているイテレータで
別のクラステンプレートの型で用いられているイテレータを
初期化することはできないってわけなんだね
もちろん
別のクラステンプレートの型で用いられているイテレータに
別のクラステンプレートの型で用いられているイテレータを
代入することはできません
そのプログラムはこちらです
👇
#include <iostream>
#include <vector>
#include <array>
using namespace std;
int main() {
vector<int> a = { 1,2,3 };
vector<int>::iterator itr1 = a.begin();
cout << *itr1 << "\n";
cout << itr1 << "\n";
array<int,3> b = { 4,5,6 };
array<int, 3>::iterator itr2;
itr2 = itr1;// イテレータitr2にイテレータitr1を代入しようとしています
cout << *itr2 << "\n";
cout << itr2 << "\n";
return 0;
}
ビルド実行結果
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー C2679 二項演算子 '=': 型 'std::_Vector_iterator<std::_Vector_val<std::_Simple_types<_Ty>>>' の右オペランドを扱う演算子が見つかりません (または変換できません)。
エラー C2679 二項演算子 '<<': 型 'std::_Vector_iterator<std::_Vector_val<std::_Simple_types<_Ty>>>' の右オペランドを扱う演算子が見つかりません (または変換できません)。
エラー C2679 二項演算子 '<<': 型 'std::_Array_iterator<_Ty,3>' の右オペランドを扱う演算子が見つかりません (または変換できません)。
エラー (アクティブ) E0349 これらのオペランドと一致する演算子 "=" はありません
エラー (アクティブ) E0349 これらのオペランドと一致する演算子 "<<" はありません
エラー (アクティブ) E0349 これらのオペランドと一致する演算子 "<<" はありません
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます