
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
#2
>そもそも2次元配列をソートしたいというのはどのような仕様でしょうか?
質問に
> dbVec[val][0].x のxを昇順にval列をソートしたいです。
とあるので、各ベクタの先頭要素のxをキーにするということだと思います。
で、#1の
>「そ~いう比較関数」を作ってやってください.
の指示に従って比較関数を作成すると、下に示すコードのようになります。
> 現実的な問題として, 本当に std::vector 同士を入れ替えたときにどのくらい時間がかかるかは知らんけど.
ソートが必要なら、配列の配列にするより配列のポインタ配列にしたほうがいいでしょうね。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct coordinate
{
int x;
int y;
};
// 比較関数
int compare(vector<coordinate>& a, vector<coordinate>& b)
{
return a[0].x < b[0].x;
}
// データの初期設定
void setup(vector< vector<coordinate> >& vec)
{
vector<coordinate> elements;
coordinateelement = { 0, 0 };
//[6, 5, 2]
element.x = 6;elements.push_back(element);
element.x = 5;elements.push_back(element);
element.x = 2;elements.push_back(element);
vec.push_back(elements);
//[4, 1, 9, 7],
elements.clear();
element.x = 4;elements.push_back(element);
element.x = 1;elements.push_back(element);
element.x = 9;elements.push_back(element);
element.x = 7;elements.push_back(element);
vec.push_back(elements);
//[8, 3]
elements.clear();
element.x = 8;elements.push_back(element);
element.x = 3;elements.push_back(element);
vec.push_back(elements);
}
// データの出力
void print(vector< vector<coordinate> >& vec)
{
for (vector< vector<coordinate> >::const_iterator i = vec.begin();
i != vec.end(); ++i)
for (vector<coordinate>::const_iterator j = i->begin();
j != i->end(); ++j)
cout << j->x << " ";
cout << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
vector< vector<coordinate> > dbVec;
setup(dbVec);
cout << "Before:" << endl;
print(dbVec);
sort(dbVec.begin(), dbVec.end(), compare);
cout << "After:" << endl;
print(dbVec);
}
No.3
- 回答日時:
ご回答いただいた例では仕様が分かりません。
[4, 1, 9, 7],
[6, 5, 2],
[8, 3]
ということですが、これではdbVecの要素数が多い順にソートしているようにしか見えず、
「xを昇順に」
と矛盾しています。
例示ではなく、どのような仕様でソートしたいのか、説明できますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- その他(プログラミング・Web制作) sortの優先キーについて(スプレッドシート) 1 2023/01/17 17:59
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- C言語・C++・C# プログラムが書けません。 4 2023/01/22 22:57
- Excel(エクセル) Excelの50音順ソートを全ての行列に適用するには? 4 2022/12/05 11:28
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構造体配列のソート
-
System.IO.Directory.GetFiles...
-
datagridviewの並べ替え
-
C++ 入力した3つのint型の整数...
-
vbでDataTableの抽出コピー
-
データ数が多い場合のソート
-
C# ArrayListを二次元配列のよ...
-
なぜ?counterintuitive
-
セグメントエラー
-
C言語 配列の長さの上限
-
VBAのプログラムで、DIAG = 1# ...
-
init関数の意味
-
Win32APIでのメモリ管理について
-
C言語のポインタに直接アドレス...
-
9枚の写真がA4 1枚に印刷できま...
-
配列の要素数に変数を入れたい...
-
c言語
-
ポインターの使用法や利点
-
fopne で失敗する原因
-
%dなどの違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
VBA基本構文の作り方 2列の...
-
C言語・要素除去
-
C# DataTableの行をソートしてD...
-
VB.NETでファイル名順にファイ...
-
構造体配列の並べ替え
-
あるディレクトリ内のファイル...
-
配列の問題
-
10個の整数を入力して小さい順...
-
2次元配列を複数項目でソートし...
-
構造体のリストをソートしたい。
-
DataGridViewソート時に先頭行...
-
DataGridViewのソートを止めたい
-
datagridviewの並べ替え
-
C++ 入力した3つのint型の整数...
-
DataGridViewの複数列を連動し...
-
Excelですべての組合せ(重複組...
-
C#のリストボックスで、クリッ...
-
VBScriptで重複レコードを削除...
おすすめ情報