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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

3066閲覧

C++でvectorを用いた配列の初期化ができない

kousuke_0225

総合スコア1

C++

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/12/30 13:17

C++でvectorを用いた配列の初期化ができない

C++でvectorを用いた配列の初期化を行いたいのですが、
以下の書き方をするとvscode上でエラーが発生します。

vector<string> names = {"itika", "nino", "miku", "yotsuba", "itsuki"}

発生している問題・エラーメッセージ

'{...}' での初期化は型 "std::__1::vector<std::__1::string, std::__1::allocator<std::__1::string>>" のオブジェクトに対しては許可されていません

イメージ説明

該当のソースコード

C++

1vector<string> names = {"itika", "nino", "miku", "yotsuba", "itsuki"}

試したこと

調べたところ、C++11以上で導入された記法のようなので、自分の環境でC++ -vしたところ、以下の様な出力となり、問題ないようでした。

Apple clang version 13.0.0 (clang-1300.0.29.3) Target: arm64-apple-darwin20.6.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

補足情報(FW/ツールのバージョンなど)

PC: apple silicon M1 macです。
vscodeで再現しました。

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

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

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

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

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

int32_t

2021/12/30 13:28

コンパイルはしてみましたか? 直したいのはvscodeの編集画面でのエラーだけですか?
kousuke_0225

2021/12/30 13:47 編集

コンパイルをした場合でも同様のエラーが出力されます????‍♂️ ``` error: non-aggregate type 'vector<std::string>' (aka 'vector<basic_string<char> >') cannot be initialized with an initializer list ```
kousuke_0225

2021/12/30 13:49

ただ、コンパイル時に ``` -std=c++11 ``` オプションを指定してあげると問題なくコンパイル可能です。 ですので、エディタ上でのエラーを消してあげることが目的です。
guest

回答2

0

ベストアンサー

エディタ上でのエラーを消してあげることが目的です。

画像を見たところ、Microsoft の C/C++ Extension を使っているようなので、C_Cpp.default.cppStandardをc++11以降に設定すればエラーは消えると思います。

json

1// settings.json 2 3{ 4 "C_Cpp.default.cppStandard": "c++20" 5} 6

投稿2021/12/30 16:21

wsb

総合スコア194

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

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

kousuke_0225

2021/12/31 01:46

なるほど...! vscode内の設定ファイルを編集すればよかったのですね。 ありがとうございます。
guest

0

手元の環境ではWindowsなので詳しくはわかりませんが、Clangのコマンドラインオプションとして C++11 であることを渡せばいいかと。

参考1: MacのClangでC++11を試すには clang++ -std=c++11 -stdlib=libc++ としてみよう

MinGW でも C++11 として使う場合は g++ -std=c++11 -o main main.cpp のように渡していますし。

それでもできないならClangのバージョン的に対応していない可能性もありますね。
ただ、ここを見る限り、バージョンの項目にはClangが無いのでもしかすると今回のやりたい事はClangでは出来ないのではないかと。

投稿2021/12/30 13:29

編集2021/12/30 15:12
BeatStar

総合スコア4958

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

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

BeatStar

2021/12/31 01:46

(あ、そっちの意味だったのか…)
kousuke_0225

2021/12/31 01:48

ありがとうございます! オプションコマンドでC++のversionを指定できる方法が勉強になりました。????‍♂️ こちらのコマンドで無事にコンパイルすることができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問