我正在创建结构并将它们推向两个向量。在创建这些结构时,我还使用lower_bound函数对它们进行排序。第一个结构按名称排序,第二个结构按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
答案 0 :(得分:4)
你可能想要:
dcommitting
但以前的引用已被$getPages = $this->fb->get('/me/likes?limit=100');
$likes = $getPages->getGraphEdge();
$totalLikes = array();
if ($this->fb->next($likes)) {
$likesArray = $likes->asArray();
$totalLikes = array_merge($totalLikes, $likesArray);
while ($likes = $this->fb->next($likes)) {
$likesArray = $likes->asArray();
$totalLikes = array_merge($totalLikes, $likesArray);
}
} else {
$likesArray = $likes->asArray();
$totalLikes = array_merge($totalLikes, $likesArray);
}
return $totalLikes;
无效。
答案 1 :(得分:0)
第一个结构按名称排序,第二个结构按ID
排序
签出boost::multi_index - 只需一个结构即可完成(具有多个排序索引)。
因为正如所指出的那样,保持跨结构的指针可能容易出错(插入/删除时地址会发生变化等)。 boost::multi_index
处理后自动处理。