【问题标题】:Is it possible to create variables during runtime in c++ [closed]是否可以在 C++ 运行时创建变量 [关闭]
【发布时间】:2012-12-29 21:08:59
【问题描述】:

是否可以在每次调用函数时为函数创建一个新变量?我正在考虑制作一个巨大的数组,每次调用函数时只使用不同的块,但我更愿意按需创建变量,这在 c++ 中可行吗?

示例: 用户输入 asdf 并点击保存,触发 savetext 功能

void savetext(textvariable)
{
static int //(this variable name should somehow become asdf) = somedata;
return;
}

【问题讨论】:

  • 听起来像动态分配(使用new)是答案,但你能举个例子说明你到底想要做什么吗?
  • 巨大的数组 = 使用 std::vector<>;除此之外,不确定您将使用整个“创建变量”方法去哪里。
  • 无论如何都不会“记住”下一次调用该函数的变量值,除非它们是static
  • 你的意思是这个函数的新块吗?在我看来,您想构造一个指向函数的指针数组。请提供一个更详细的示例来说明您想要实现的目标。
  • 现在,在您编辑之后,听起来好像是以下问题之一的重复:stackoverflow.com/questions/7143120/…stackoverflow.com/questions/13220957/generating-variables-names

标签: c++


【解决方案1】:

如果您有一些东西,例如,将东西添加到数组中,那么vector 是正确的解决方案。 vector 类将根据您的需要自动增长,使用 push_back 函数向自身添加内容。

vector 类主要作为一个数组,可以根据需要增长,因此它非常易于使用。

【讨论】:

  • 不,“我需要存储一堆东西”的默认值是矢量。只有当你以某种方式证明向量不够好(不能做你想做的事,或者某些性能原因)时,你才应该使用其他东西。
  • std::vector<> 是正确的解决方案,并且如果您需要将受控序列放在连续的内存中。当人们推荐std::vector<> 时,他们实际上是指std::deque<>
  • 这可能是我要找的,我会调查一下,谢谢。
  • 如果你想保存一堆文本,我建议你使用 std::vector<:string> 。让每个条目是一行文本,或者类似的。
【解决方案2】:

每次输入一个函数,里面的所有变量都是新的。除非您需要比函数寿命更长的对象,或者您不知道需要多少个,否则无需显式创建变量。

【讨论】:

  • 这是我暗示的一部分,变量现在基本上与全局变量类似,因为它们的寿命会比我的函数长,但我不确定静态是否能解决问题,除非我能做到每次调用时变量的动态名称。
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
相关资源
最近更新 更多