構造体を作成して2つのベクトルにプッシュします。これらの構造を作成する際にlower_bound関数を使用してソートします。最初の構造は名前でソートされ、2番目の構造はIDでソートされます。機能がどのように見える構造体のアドレスを他の構造体のポインタに代入する
:どのように私はお互いを指すように、これら二つの構造 内のポインタを設定することができます。
bool AddAndSort (name , ID)
{
auto it = lower_bound (arr_1 . begin(), arr_1 . end(), name, compare2());
auto it1 = lower_bound(arr_2 . begin(), arr_2 .end(), ID , compare1 ());
struct1 tmp1(name); // create temporary structures which i will push to the vector
struct2 tmp(ID);
arr_1 . insert (it, tmp);
arr_2 . insert (it1, tmp1);
/*tmp . p = &tmp1;
tmp1 . p = &tmp;*/
return true;
}
は、私はこれを試してみました。ここで疑問がありますか?
tmp . p = &tmp1; tmp1 . p = &tmp;
しかし、これは動作しません:
構造:
struct struct1
{
struct1 (string name) : name (name) { }
string name
struct2 *p;
};
struct struct2
{
struct2 (int ID) : ID (ID) { }
int ID;
struct1 *p;
}
ベクトル:
vector<struct1> arr_1
vector<struct2> arr_2
なぜ機能しないのですか?コンパイラエラーが出ますか? 'index'は構造体に存在しません。' p'を意味しましたか? – TartanLlama
申し訳ありませんが、私はそれがpする必要があります名前を編集するのを忘れました – kvway
さて、あなたはまだあなたのコンパイラエラーを投稿する必要があります。また、 'std :: lower_bound'は何もソートせず、関数のシグネチャはコンパイルされません。 – TartanLlama