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

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

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

Scalable Vector Graphcs(SVG)は、XMLを基調とした、2次元ベクターの画像フォーマットです。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

C++

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

Q&A

解決済

1回答

4615閲覧

c++でvectorの要素の入れ替えができません

otakurounin

総合スコア25

Scalable Vector Graphics

Scalable Vector Graphcs(SVG)は、XMLを基調とした、2次元ベクターの画像フォーマットです。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

C++

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

0グッド

0クリップ

投稿2020/07/19 12:38

c++でvectorのソートをするコードを書きたいのですが、うまくいきません。
たぶん、すごく頓珍漢なことをしようとしているのではないかと思いますが。

c++

1void swap(int *xp, int *yp){ 2 int temp=*xp; 3 *xp=*yp; 4 *yp=temp; 5} 6 7void bubblesort(int a[], int n){ 8 int i,j; 9 for(i=0;i<n-1;i++){ 10 for(j=0;j<n-i-1;j++){ 11 if(a[j]>a[j+1]){ 12 swap(&a[j],&a[j+1]); 13 } 14 } 15 } 16} 17 18void bubblesort(vector<int> a, int n){ 19 int i,j; 20 for(i=0;i<n-1;i++){ 21 for(j=0;j<n-i-1;j++){ 22 if(a.at(j)>a.at(j+1)){ 23 swap(&a[j],&a[j+1]); 24 } 25 } 26 } 27} 28int main(){ 29vector<int> b ={10,9,8,7,6}; 30bubblesort(b, 5); 31} 32

エラーにはなりませんがソートされません。

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

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

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

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

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

guest

回答1

0

ベストアンサー

特に指定しなければ引数はいわゆる「値渡し」です。 つまり、この場合には void bubblesort(vector<int> a, int n)a として受け取ったものは main 内の bコピーです。

コピーされたものを並び替えていることになるので大元のオブジェクトには影響を及ぼしません。

参照として受け取ってそれを並び替えるか、新しく作ったオブジェクトを返却値として返すかすべきです。

投稿2020/07/19 12:55

SaitoAtsushi

総合スコア5444

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

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

otakurounin

2020/07/20 09:59

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問