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

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

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

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

Q&A

解決済

1回答

547閲覧

C++ std::cin >> tmp1.push_back(); このようなことは実現可能でしょうか?

opyon

総合スコア1009

C++

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

0グッド

0クリップ

投稿2018/11/13 14:35

###知りたいこと
サンプルコードのように一旦変数に読み込み、その後push_backするしかありませんか?
もし直接代入できる方法があればご教示ください。

※当然このままだとエラーになりますがこのように出来たら良いなというイメージです。
std::cin >> tmp1.push_back();

###サンプルコード

C++

1void test() 2{ 3 int n, v1, v2; 4 std::cin >> n; 5 std::vector<int> tmp1, tmp2; 6 7 for (int i = 0; i < n; ++i) 8 { 9 std::cin >> v1 >> v2; 10 tmp1.push_back(v1); 11 tmp2.push_back(v2); 12 } 13}

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

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

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

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

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

guest

回答1

0

ベストアンサー

std::istream_iteratorを使います。

c++

1#include <vector> 2#include <iostream> 3#include <iterator> 4 5int main() 6{ 7 int n; 8 std::cin >> n; 9 std::vector<int> tmp1, tmp2; 10 11 std::istream_iterator<int> cintr = std::istream_iterator<int>(std::cin); 12 for (int i = 0; i < n; ++i) 13 { 14 tmp1.push_back(*cintr++); 15 tmp2.push_back(*cintr++); 16 } 17 for(auto i : tmp1){ 18 std::cout << i << std::endl; 19 } 20}

追記

再度検証したところ、提示された問題ではresizeやコンストラクタで格納する場所だけ先に作った方が適切と推測されます。

c++

1#include <vector> 2#include <iostream> 3 4int main() 5{ 6 int n; 7 std::cin >> n; 8 std::vector<int> tmp1(n), tmp2(n); 9 10 // tmp1.resize(n); 11 // tmp2.resize(n); 12 for (int i = 0; i < n; ++i) 13 { 14 std::cin >> tmp1[i]; 15 std::cin >> tmp2[i]; 16 } 17 for(auto i : tmp1){ 18 std::cout << i << std::endl; 19 } 20}

投稿2018/11/13 15:05

編集2018/11/13 15:57
asm

総合スコア15147

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

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

opyon

2018/11/13 15:26

回答ありがとうございます。 これは便利そうですね。 使い方について分からない点があるので確認させてください。 入力例 3 1 2 3 4 5 6 上記を入力させると3回ループして終了するはずなのですが、 もう1行分入力しないと待機状態となります。 仮にもう1行適当な入力をすると結果は正しく出るのですが、ループ回数に工夫が必要なのでしょうか? 1 3 5
asm

2018/11/13 15:52

問題確認しました。 ファイルをリダイレクトなどさせる場合 EOFが書き込まれるので問題ないですが、地味に不便ですね。
opyon

2018/11/13 16:19

>問題確認しました。 お手数おかけしてすみませんでした。 無理にどうしても何かしらの方法で使いたいというわけではないので大丈夫です。 問題の入力などでは無くて何かしらの連続処理などには使えそうだと思いました。 直接入力することは確認できたので解決とさせていただきます。 最後の行数の問題はまた別問題だと思うので一旦クローズさせていただきます。
opyon

2018/11/13 16:21

>再度検証したところ、提示された問題ではresizeやコンストラクタで格納する場所だけ先に作った方が適切と推測されます。 確かにその方がシンプルですね! そのようにしてみます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問