将结构地址分配给另一个结构的指针

时间:2016-03-31 14:13:21

标签: c++ pointers structure

我正在创建结构并将它们推向两个向量。在创建这些结构时,我还使用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

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处理后自动处理。