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

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

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

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

Q&A

解決済

1回答

649閲覧

C++ push_back

encho

総合スコア182

C++

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

0グッド

0クリップ

投稿2020/07/18 11:48

#C++ push_back関数について

以下のようなコードを書いています。
入力値を合計し、それぞれのインデックスにおける合計値を
vector<int> S(n)に格納したいです。

入力値nには配列の長さが入力されます。

cpp

1#include <bits/stdc++.h> 2using namespace std; 3 4int main() { 5 int n; 6 cin >> n; 7 vector<int> W(n); 8 for(int i=0; i<n; i++) cin >> W[i]; 9 vector<int> S(n); 10 11 int sum = 0; 12 for(int i=0; i<n; i++) { 13 sum += W[i]; 14 S.push_back(sum); 15 } 16 cout << S[0] << endl; 17}

以下のぶぶんでそれぞれのsumをvectorに格納しているつもりなのですが、どのような入力値に対しても
S[0] = 0という出力がされています。

cpp

1int sum = 0; 2 for(int i=0; i<n; i++) { 3 sum += W[i]; 4 S.push_back(sum); 5 } 6 cout << S[0] << endl;

おそらくvectorへの数値の入れ方が悪いとは思うのですが、どうするべきかわかりませんでした。
何かアドバイスをいただけると幸いです。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

vector<int> S(n); // 要素n個用意して
...
S.push_back(sum); // そのうしろにsumを追加

↑それじゃうまいこといくわけない。 vector<int> S; でよくね?

S[0] = W[0]
S[1] = W[0] + W[1]
S[2] = W[0] + W[1] + W[2]
...
を求めたいのかしら。

C++

1#include <iostream> 2#include <vector> 3#include <numeric> 4 5int main() { 6 std::vector<int> W = { 1, 3, 5, 7, 9 }; 7 std::vector<int> S(W.size()); 8 std::partial_sum(W.begin(), W.end(), S.begin()); 9 10 for ( int item : S ) { 11 std::cout << item << ' '; 12 } 13 std::cout << std::endl; 14}

投稿2020/07/18 11:58

編集2020/07/18 12:00
episteme

総合スコア16612

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

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

encho

2020/07/18 12:04

ご回答ありがとうございます。 partial_sumなんてあるんですね。 とても便利ですね参考になります。 これを使わずにやるとしたら vector<int> S(n)ではなく vector<int> S;としてpush_back(sum)とするべきだったんでしょうか?
episteme

2020/07/18 12:07

やってみたらわかるっしょ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問