当前位置:  开发笔记 > 编程语言 > 正文

在c ++中返回数组的简单方法

如何解决《在c++中返回数组的简单方法》经验,为你挑选了1个好方法。

我试图id在C++中使用以下函数.我原以为我可以干脆做;

typedef int v3[3];

v3 & id( v3 & in )
{
  in[0] = in[1] = in[2] = 1;
  return in;
}

int main()
{
  v3 & v = id( v );
  return 0;
}

然而,这导致了一个段错g++(我不清楚).因为我可以使用标量类型执行以下操作:

int & zero( int & in )
{
  in = 0;
  return in;
}

int main()
{
  int i = zero( i );
  return 0;
}

如何使用id单行代码?我想避免一个丑陋的解决方案,例如:

int main()
{
  v3 v;
  v3 & w = id( v );
}

当然我不想用std::vectorstd::array(c ++ 11).所以我真的很感兴趣,为什么我的天真解决方案实际上是undefined behavior.

编辑:std::vector将需要动态分配,在我的情况下应该避免(我需要操纵数千vr3).我不能使用,std::array因为我被要求坚持c++03.显然人们无法猜测我的要求.



1> John Zwinck..:

这个:

v3 & v = id( v );

还有这个:

int i = zero( i );

是胡说八道,因为你不能在自己的初始化程序中使用某些东西.一些编译器会警告你这个,但有些不会.

你可以做一个宏:

#define V3_UNIT {1,1,1}

现在你可以这样做:

v3 v = V3_UNIT;

PTHREAD_MUTEX_INITIALIZER 这是野外这种技术的一个常见例子.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有