どうすればコメント部の内部 // ------ のitr-> ですがどうすれば std::map<string std::vector<string>>の中を参照してitr->second といったように触れるのでしょうか?
cpp
1#include <iostream> 2 3#include <vector> 4#include <map> 5 6#include <string> 7#include <stdlib.h> 8#include <compare> 9#include <filesystem> 10 11int main() 12{ 13 //_popen("notepad", "rb"); 14 std::string FilePath = "C:\Users\yw325\Desktop\Test\Test\Music_Data"; 15 16 std::map<std::string, std::vector<std::string>> idx; 17 std::vector< std::map<std::string, std::vector<std::string>> > mIndex; // ライブラリ全体 18 19 std::string name = ""; 20 21 22 for (std::filesystem::directory_entry itr : std::filesystem::recursive_directory_iterator(FilePath)) 23 { 24 if (itr.is_directory() == true) 25 { 26 //ディレクトリの場合 27 name = std::filesystem::path(itr.path().filename()).string(); //ディレクトリ名をキーに挿入 28 //name = std::filesystem::absolute(std::filesystem::path(itr.path().filename())).string(); 29 } 30 else 31 { 32 //フォルダの場合 33 idx[name].push_back(std::filesystem::absolute(itr.path()).string()); //フォルダの絶対パスを挿入 34 mIndex.push_back(idx); 35 } 36 } 37 38 39 // ----------------------------------------------------------------------------------------------------------------------------------- 40 for (std::vector<std::map<std::string, std::vector<std::string>>>::iterator itr = mIndex.begin(); itr != mIndex.end(); itr++) 41 { 42 43 std::cout << "key: " << itr << std::endl; 44 45 46 for (std::vector<std::string>::iterator it = itr->second.begin(); it != itr->second.end(); it++) 47 { 48 printf(" %s\n", it->c_str()); 49 } 50 51 52 53 } 54 // ----------------------------------------------------------------------------------------------------------------------------------- 55 return 0; 56} 57
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/12/02 12:57