質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
STL

STL(Standard Template Library)は、ジェネティックコンテイナー、イテレーター、アルゴリズム、そして関数オブジェクトのC++ライブラリーです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

1931閲覧

VSCodeでのSTLのウォッチをしたいです(C++)

chan_yu1224

総合スコア7

STL

STL(Standard Template Library)は、ジェネティックコンテイナー、イテレーター、アルゴリズム、そして関数オブジェクトのC++ライブラリーです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2019/08/21 11:31

編集2019/08/21 11:58

## 質問内容
こんにちは.お世話になっております.

C++を勉強するためにVisual Studio Codeを使っているのですが,
変数のウォッチをする際にSTLの中身が見れません.
STLの中身を可視化するためにはどうすればいいでしょうか?

設定ファイル

設定ファイルのtasks.jsonlaunch.jsonを以下に示します.

tasks

1{ 2 // See https://go.microsoft.com/fwlink/?LinkId=733558 3 // for the documentation about the tasks.json format 4 "version": "2.0.0", 5 "tasks": [ 6 { 7 "label": "g++ compile", 8 "type": "shell", 9 "command": "g++", 10 "args": ["-g","-O0","-o","test","${file}"], 11 "group": { 12 "kind": "build", 13 "isDefault": true 14 }, 15 "problemMatcher": [] 16 } 17 ] 18}

launch

1{ 2 // IntelliSense を使用して利用可能な属性を学べます。 3 // 既存の属性の説明をホバーして表示します。 4 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 5 "version": "0.2.0", 6 "configurations": [ 7 { 8 "name": "(gdb) Launch", 9 "type": "cppdbg", 10 "request": "launch", 11 "program": "${workspaceRoot}/test.exe", 12 "args": [], 13 "environment": [], 14 "cwd": "${workspaceFolder}", 15 "stopAtEntry": false, 16 "externalConsole": true, 17 "MIMode": "gdb", 18 "miDebuggerPath": "C:\Strawberry\c\bin\gdb.exe", 19 "setupCommands": [ 20 { 21 "description": "Enable pretty-printing for gdb", 22 "text": "-enable-pretty-printing", 23 "ignoreFailures": true 24 } 25 ] 26 } 27 ] 28}

環境

Windows10(1903)
Visual Studio Code(1.37.1)
GNU gdb (GDB) 7.11.1
gcc version 7.1.0 (MinGW.org)

試したこと

etc/gdbinitに,以下の文を追加しました.
register_libstdcxx_printers (None)

書き込み後

python import sys sys.path.insert(0, sys.path[0] + '/../../gcc-7.1.0/python') from libstdcxx.v6.printers import register_libstdcxx_printers register_libstdcxx_printers (None) end

これでも以下のようにSTLの中身を可視化できません....

VSCode デバッグ画面

#### 追記
必要無いかと思いますが,今回使用しているソースコードも貼っておきます.(まだ意図通りには動作しないです)

#include <bits/stdc++.h> #define rep(i, n) for(int i = 0; i < (int)(n); i++) #define repr(i, n) for(int i = (int)(n); i >= 0; i--) #define repm(i, m, n) for(int i = (int)(m); i < (int)(n); i++) #define repmr(i, m, n) for(int i = (int)(n); i >= (int)(m); i--) #define all(x) (x).begin(),(x).end() #define inf 2e9 using namespace std; typedef long long int lli; typedef long long ll; int main() { //入力処理 vector<vector<char>> a(10, vector<char>(10)); int lands = 0; vector<int> start(2,-1); rep(i,10)rep(j,10){ cin >> a[i][j]; if(a[i][j] == 'o'){ lands++; if(start[0] == -1){ start[0] = i; start[1] = j; } } } //判定処理 bool success = false; rep(i,10){ rep(j,10){ //周囲に2マス以上陸があるか判定 int l_cnt = 0; if(a[i][j] != 'o'){ if(i-1 >= 0)if(a[i-1][j] == 'o') l_cnt++; if(i+1 < 10)if(a[i+1][j] == 'o') l_cnt++; if(j-1 >= 0)if(a[i][j-1] == 'o') l_cnt++; if(j+1 < 10)if(a[i][j+1] == 'o') l_cnt++; } if(l_cnt >= 2){ //変数初期化 vector<vector<char>> tmp_a = a; tmp_a[i][j] = 'o'; stack<vector<int>> st; st.push(start); vector<vector<bool>> rout(10, vector<bool>(10,false)); int fill_cnt = 0; //深さ優先探索 while(st.size() != 0){ vector<int> now = st.top(); st.pop(); fill_cnt++; rout[now[0]][now[1]] = true; if(now[0]-1 >= 0 && a[now[0]-1][now[1]] == 'o' && !rout[now[0]-1][now[1]]){ st.push({now[0]-1,now[1]}); } if(now[0]+1 < 10 && a[now[0]+1][now[1]] == 'o' && !rout[now[0]+1][now[1]]){ st.push({now[0]+1,now[1]}); } if(now[1]-1 >= 0 && a[now[0]][now[1]-1] == 'o' && !rout[now[0]][now[1]-1]){ st.push({now[0],now[1]-1}); } if(now[1]+1 < 10 && a[now[0]][now[1]+1] == 'o' && !rout[now[0]][now[1]+1]){ st.push({now[0],now[1]+1}); } } //全て塗れたか判定 if(fill_cnt == lands){ success = true; break; } } } } //出力処理 cout << ((success)?"YES":"NO") << endl; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ちょっと古い記事ですが、以下に解決方法が載っていました。
Visual Studio Codeを用いたC++ STLデバッグの方法(※2016/12/23追記)

投稿2019/08/22 01:44

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chan_yu1224

2019/08/22 03:37

こんにちは. 回答ありがとうございます. いろいろ調べてその記事を見つけてその方法を試みたのですが, STLの中身を可視化することはできませんでした....
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問