C++の独学初心者が仕様書やエラーの見方に困っています

このQ&Aのポイント
  • C++の独学初心者が仕様書やエラーの見方に困っています。特に、vscodeのreverse()関数の仕様書の見方がわかりません。
  • 仕様書の見方がよくわからず、返り値がvoidであること以外の情報が取得できません。
  • 解説しているサイトがあれば教えて欲しいです。また、C++のエラーの見方もわかりません。
回答を見る
  • ベストアンサー

C++について

C++の独学初心者です 仕様書?やエラーの見方が全くわかりません 例えば vscodeにてreverse()の関数の説明を見ると以下のような仕様書というのでしょうか?ものが見れますが 私はここからわかるのは返り値がvoidであるということぐらいがだいたい想像できるだけです これはどの様に見れば良いのでしょうか? 解説している様なサイトがあれば教えてください void std::__1::reverse<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::iterator>(std::__1::__wrap_iter<...> __first, std::__1::__wrap_iter<...> __last) よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.1

>void std::__1::reverse 戻りがvoid型で、名前空間がstdの中の__1にあるreverseという名のメソッド。 ><std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::iterator> (メソッド)名前の直後に<>で括られている部分があるのはテンプレート化されているという事です。 reverseのテンプレート引数はstd::string_basic<>::iterator型(string_basicへのテンプレート引数にcharが指定されているのでstd::stringと同定義になる)です。 >(std::__1::__wrap_iter<...> __first, std::__1::__wrap_iter<...> __last) __wrap_iterのようにアンダースコアで始まるのはc++標準ライブラリ(std)の内部用定義で、外部に仕様が公開されていないものです。 テンプレート引数が...になっているのは可変引数であることを意味しています。 reverseの引数としては、__firstと__endがあります。

ririkam
質問者

お礼

丁寧な解説ありがとうございました。 たすかりました。

関連するQ&A

  • リリースモードの時にリンカエラーが発生します

    リリースモードの時にリンカエラーが発生します Visual Studioで、自作ライブラリを使ったプログラムの開発をしていたのですが、リリースモード時にリンカエラーが発生してしまいました。 デバッグモード時は特に問題なくリンクできるのですが、リリースモードでコンパイルをすると以下のようなエラーが発生します。 LibGame.lib(Game.obj) : error LNK2001: 外部シンボル ""bool __cdecl FileExists(class std::basic_string,class std::allocator >)" (?FileExists@@YA_NV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)" は未解決です。 LibGame.lib(Mesh.obj) : error LNK2001: 外部シンボル ""public: struct ARCHIVE_ENTRY * __thiscall CArchive::Find(class std::basic_string,class std::allocator >)" (?Find@CArchive@@QAEPAUARCHIVE_ENTRY@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)" は未解決です。 LibGame.lib(Mesh.obj) : error LNK2001: 外部シンボル ""class std::basic_string,class std::allocator > __cdecl ExtractFilePath(class std::basic_string,class std::allocator >)" (?ExtractFilePath@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@Z)" は未解決です。 Release/ShtGame.exe : fatal error LNK1120: 外部参照 3 が未解決です。 プロジェクトのプロパティ等でリンク先のライブラリを有無やヘッダをチェックしたのですが、原因がつかめませんでした。 どのようなエラー原因が考えられるでしょうか? よろしくお願いします OS:Windows XP SP3 言語:VC++ 開発環境:Visual Studio 2005 Academic Edition

  • Visual C++ Toolkitでcppをコンパイルすると・・

    最近質問が多くてすみません。 一応調べてみましたが、同じような質問が既存ならば警告お願いします。 #include <iostream> int main(){ return 0; } これだけのファイルを、例えばtest.cppとして保存します。そして cl test.cpp とすると、ぶわーっと警告(warning)がでて、しかしtest.exeができあがります。 警告内容がかなり長いので、そのうちの1つを載せます。 C:\Program Files\Microsoft Visual C++ Toolkit 2003\include\stdexcept(39) : see reference to class template instantiat ion 'std::basic_string<_Elem,_Traits,_Ax>' being compiled with [ _Elem=char, _Traits=std::char_traits<char>, _Ax=std::allocator<char> ] 意味がわかりません!! ちなみに、bccでは警告なしにコンパイルできます。

  • c++のビルドエラーについて

    昨日からc++を学習し始めました。 pythonは2年ほどになりますが、c++は初めてだったので、コンパイルでエラーが起こってしまいわからなくなってしまったので質問させていただきました。 hello worldを出力しようと思いやってみたのですが、どこでエラーが起こっているのかがわかりません。 下記が私の書いたソースコードです。 #include <iostream> using namespace std; int main(){ cout << "HelloWorld." << endl; } エラーメッセージ C:\Users\ユーザー名\AppData\Local\Temp\ccKwbLoc.o: In function `main': C:/Users/ユーザー名/Documents/cpp/hello.cpp:4: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' C:/Users/ユーザー名/Documents/cpp/hello.cpp:4: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' C:\Users\ユーザー名\AppData\Local\Temp\ccKwbLoc.o: In function `__tcf_0': C:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/iostream:74: undefined reference to `std::ios_base::Init::~Init()' C:\Users\ユーザー名\AppData\Local\Temp\ccKwbLoc.o: In function `__static_initialization_and_destruction_0': t::Init()' e to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)' C:\Users\ユーザー名\AppData\Local\Temp\ccKwbLoc.o:hello.cpp:(.rdata$.refptr._ZSt4cout[.refptr._ZSt4cout]+0x0): undefined reference to `std::cout' collect2.exe: error: ld returned 1 exit status os:windows11 home 64ビット コンパイラ gcc (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project) 8.1.0 エディタ:vscode よろしくお願いいたします。

  • C++がコンパイルできない...

    非常に初歩的な問題で恐縮なのですが、以下のようなシンプルなプログラムでコンパイルが出来ず困っております。 何がいけないのか、もしくは何をチェックすればよいかを教えて下さい *_*; program #include <iostream.h> int main(void){ cout << "matumoto"; } ---- 最初 void main(void)とした所、怒られたため、int ...としましたが、更に以下のようなエラーが出力されてしまいました 未定義の 最初に参照している シンボル ファイル std::ios_base::Init::~Init [in-charge]()/var/tmp//ccxj7cux.o std::ios_base::Init::Init[in-charge]()/var/tmp//ccxj7cux.o std::cout /var/tmp//ccxj7cux.o std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)/var/tmp//ccxj7cux.o __gxx_personality_v0 /var/tmp//ccxj7cux.o ld: 重大なエラー: シンボル参照エラー。a.out に書き込まれる出力はありません。 collect2: ld returned 1 exit status [環境] Solaris 8 gcc %>>gcc -ver Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.3/specs Configured with: ../configure --disable-nls --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld Thread model: posix gcc version 3.3 すみませんが、宜しくお願い致します。

  • MSVCP80.dll 

    X-APPLICATION.exe-エントリーポイントが見つかりません プロシージャ エントリポイント ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2IBが ダイナミック リンク ライブラリ MSVCP80.dll から見つかりませんでした このエラーはどうしたら解決できるのでしょうか?ソフトが起動できません。 MSVCP80.dllというのをDLして、system32にいれたのですが、解決しませんでした。 何か方法はありますlか? WINDOWS7です。

  • STLで、vectorのファイルへの書き出し、読み込み。

    STLで、vectorのファイルへの書き出し、読み込み。 C++ の STL で vector をファイルに書き出し、読み込もうとしておりまして、まずは書き出しで躓いております。 vector<int> testvector; for (i = 0 ; i < 10 ; i++) testvector.push_back( i ); ofstream out("test.dat", ios::out | ios::binary); if (!out) return 1; out.write((vector<int>) testvector, sizeof(testvector)); out.close(); こんな感じのコードですと、 error: no matching function for call to ‘std::basic_ofstream<char, std::char_traits<char> >::write(std::vector<int, std::allocator<int> >, long unsigned int)’ /usr/include/c++/4.2.1/bits/ostream.tcc:173: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::write(const _CharT*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>] とのことです orz. どのようにすれば vector を書き出し、そして読み込むことができるのでしょうか。情報がありましたら是非お寄せください。

  • C++のvectorについて教えてください。

    C++のvectorについて教えてください。 現在悩んでいる問題について簡単に説明するために、テストコードを書きました。 #include <vector> class IntType { private: int num; public: IntType( int n ):num( n ){}; }; std::vector< IntType > IntVector; void main() { } このコードをDebug版でコンパイルすると 1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\xutility(285) : error C2784: 'bool std::operator <(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)' : テンプレート 引数を 'const std::reverse_iterator<_RanIt> &' に対して 'const size_t' から減少できませんでした 1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\xutility(2236) : 'std::operator <' の宣言を確認してください。 のようなエラーが出ます。 しかし、Release版でコンパイルするとコンパイルは通ります。 Debug版でコンパイルを通すにはどのようなコードを追加すればよいでしょうか? 知恵を貸してください。 よろしくおねがいします。 /** VisualStudio2008 AcademiEdition */

  • リンクされません

    こんにちは 今、VC6.0を使ってVTKについてプログラムをしております。 しかし、どうしてもわからないエラーがでています。 ------------------------------------------- vtkMyTorus3.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall vtkObject::PrintTrailer(class std::basic_ostream<char,struct std::char_traits<char> > &,class vtkIndent)" (?PrintTrailer@vtkObject@@UAEXAAV?$basic_ostream@D U?$char_traits@D@std@@@std@@VvtkIndent@@@Z) ------------------------------------------- このようなエラーが多発してましてビルドできません。 だれかご鞭撻おねがいします。

  • mapによるkeyとvalueのinsertに失敗しております。

    STLのmapコンテナにて、 valueを取得したり、 keyとvalueを登録するソースを書いていました。 get(key)にあたって、 valの取得に失敗した際には、 mapコンテナ上のkey-valueデータと 同期されているMySQLより、 データを取得してきます。 MySQLよりkeyに対応するvalの取得が 完了したら、 そのkeyとvalをmapコンテナに insertしたいと思っています。 つきまして、 insertを行おうと、 「_container.insert(std::make_pair(key, val));」の一文を ソースに挿入したところ、 「型が違う!」という内容(?)のエラー文で コンパイル時に怒られてしまいました。 ただ、「どの様に直してごらん!」と エラー文が言っているのか、 今いち、意味を理解できないでいます。 このエラー情報的には、 どんな風の型の改善を求められているのでしょうか? 教えていただけるとありがたいです。 もし可能でしたら、pointBの 「_container.insert(std::make_pair(key, val));」の部分で、 MySQLから取得済みkeyとvalを、 pointAのkeyとvalに代入する方法も 教えていただけるとありがたいです。 どちらかでも、 アドバイスをいただけますとありがたいです。 どうぞ宜しくお願い致します。 -------------------------------------------------- template<typename KEY, typename VALUE> class hoge : public service_object<ipl<KEY, VALUE>> { virtual void put(key_type key, value_type val) { _container.insert(std::make_pair(key, val)); // pointA } virtual cc::fu<value_type> get(key_type key) { typename container_type::iterator iterator = _container.find(key); if (iterator != _container.end()) { return cc::fu<value_type>((*iterator).second); }else { //getにした場合MySQLよりkeyとvalueを取得完了できるので取得した。 /* MySQLより取得したkeyとvalをpointAのようにmapコンテナにinsertしたい。*/ _container.insert(std::make_pair(key, val)); //pointB  } } }; -------------------------------------------------- ■エラー文 error: conversion from std::pair<std::_Rb_tree_iterator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::shared_ptr<csx::basic_message_cons<csx::basic_message<void, char> > > > >, bool>’ to non-scalar type ‘csrpc::future<boost::shared_ptr<csx::basic_message_cons<csx::basic_message<void, char> > > >’ requested

  • エラーの意味がわからない

    すみません。 以前に似たような質問をしたのですが解決されません。 誰かおしえてください。 ---------------- vtktorus.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall vtkObject::PrintTrailer(class std::basic_ostream<char,struct std::char_traits<char> > &,class vtkIndent)" (?PrintTrailer@vtkObject@@UAEXAAV?$basic_ostream@DU?$ char_traits@D@std@@@std@@VvtkIndent@@@Z) ---------------- なんですけど、とりあえず考慮してやってみたことは (1)libファイルを足してみる。 >>>vtkを使っているのでvtkdll.libだけ足しました。 (2)本体が見つからないらしいので本体を探してみる。 >>>ちゃんと記入しました。 (3)非常にたくさんのソースを併用しているので変数とかがかぶっていないか見てみる >>>かぶってないみたいです。

専門家に質問してみよう