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

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

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

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

配列

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

Q&A

3回答

1002閲覧

(競技プログラミング)文字列と数値をセットにしたいです

taku_512

総合スコア0

C++

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

配列

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

0グッド

0クリップ

投稿2021/06/12 02:51

前提・実現したいこと

C++でAtCoderのこの問題を解きたいです.
文字列(入力例1で言うとEverestなど)と数値(入力例1で言うと8849など)をセットにするのってどうするんですか?
解説を見たら,ector<pair<int,string>> data(N);とあったのですが,これを使うんですか?

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

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

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

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

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

BeatStar

2021/06/12 10:12 編集

もしかして、そもそも『どうすればいいかわからん。教えろ』っていうことですか? もしそうなら、『質問者さんにはまだ出来ないレベルなので、下のレベルからやるべき』ですね。 (だって「B問題」ってことは、「A問題」の上。でも全体的な考え方が出来ていないなら、 そもそもA問題も解けなさそう……。解けるなら殆ど同じ要領で解けるはずですし) そうじゃなくて、単に『必ず vector + pair でやらないといけないのか』っていうことなら構いませんが。(いや、良くはないだろうけど、まだ納得できるし)
guest

回答3

0

std::pairが分からないのであれば構造体使えばいいのではないでしょうか?

c++

1struct mountain_information { 2 std::string name; // char name[16];でも可 3 int height; 4}; 5mountain_information mountains[1001] = {};

投稿2021/06/12 03:27

編集2021/06/12 03:28
asm

総合スコア15147

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

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

0

pairを使うのはいい方法だと思います。
std::map使って高さをkeyにするという方法もありますね。

投稿2021/06/12 03:22

fukatani

総合スコア626

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

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

0

プログラミングは「こう書けばいい」ではないです。

つまり、書き方はいくらでもあると言うこと。仕様に沿っていて、実行結果が合っていればそれでいいのです。

質問にある解説の実装方法を含めると、
私の場合は3種類ほど思いつきますね。


[追記1]

たとえば、以下の通りです。

[候補1] 単に構造体を定義して、それの配列またはvectorを使う [候補2] 候補1のクラス版 [候補3] std::vector< std::pair<int,string> > を使う

さらに考えれば、(言われてから気づきましたが)

[候補4] std::priority_queueを使う [候補5] std::mapを使う

もあり得ますね。

(最初、回答したとき、単に「データを確保するという目的」だけに注目していたので、priority_queueとかが思い付かなかった……)

std::priority_queueは「優先度付きキュー」なので、実装はともかく、取り出すときは「ソート済み」になるため、今回の目的を考えると最適かもしれません。

投稿2021/06/12 02:55

編集2021/06/12 10:16
BeatStar

総合スコア4958

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

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

episteme

2021/06/12 05:35

> 私の場合は3種類ほど思いつきますね。 予想: - vector<pair<string,int> + partial_sort() - map<int,string> - priority_queue<pair<int,string>> 他には - vector<pair<int,string> + upper_bound() + vector::insert() とか...
BeatStar

2021/06/12 10:03

あー、そういえば priority_queueとかもありましたね…… (忘れていた……)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問