【发布时间】:2012-04-17 19:21:09
【问题描述】:
我有一个数组定义为;
静态双 Temp_data[TABLE_SIZE];
我想根据用户输入改变数组的大小。 这可能吗? 请帮我。 谢谢。
【问题讨论】:
标签: c++ arrays visual-c++
我有一个数组定义为;
静态双 Temp_data[TABLE_SIZE];
我想根据用户输入改变数组的大小。 这可能吗? 请帮我。 谢谢。
【问题讨论】:
标签: c++ arrays visual-c++
没有。你可能想使用std::vector<double> Temp_data;
然后你可以使用它的resize()成员函数来设置你认为合适的大小。
编辑:为了清楚起见,您通常希望尽可能避免直接使用new(在这种情况下,您可以很容易地)。直接使用new 是很多类型错误的源头。 std::vector 处理了很多难以用new 纠正的极端情况,确保数据在超出范围时得到清理,等等。
我之前说过,我将在这里重复一遍:有一次,您别无选择,只能编写使用 new 的代码。现在,你确实有一个选择——你应该锻炼它。鉴于现代编译器和标准库,几乎没有任何理由使用 new 分配数组。
【讨论】:
vector 开始,然后使用push_back 添加任意数量的项目(当然,有一个限制)。但是,如果用户提供了尺寸,您可以使用 resize 使其成为该尺寸。
reserve() 可能是更好的选择。)
std::vector 与需要数组的函数一起使用——当您需要调用该函数时,只需给它&myvector[0],或者(使用较新的编译器)@ 987654335@.
T *pData
pData = new T[NUM_ELEMENTS];
基本上使用 new 运算符。从任何 C++ 参考中阅读有关 new 的更多信息
【讨论】:
使用动态内存分配。
int size;
cin>>size
int *ptr = new int[size];
【讨论】:
vector 是真正给你更多控制权的那个。在任何情况下,至少部分正确——如果您真的需要不调整大小的东西(例如),请考虑使用std::array。搜索(例如)不是vector 的一部分——您将使用一种标准算法,该算法同样适用于数组。