[英]Array initialization in c++
我是C ++的新手,我想知道这是否有效。
因此,我想创建一个字符串数组,但是在将值传递给正在使用的类中的函数之前,我不知道需要的数组大小。因此,我可以这样做:
string sList[];
void init(unsigned int size=1)
{
sList = new string[size];
}
如果这是一个愚蠢的问题,我感到抱歉,但是我是C ++的Java新手。
编辑:这是一项涉及我编写数组包装器类的任务。 如果我可以使用vector <>,请相信我。
这是正确的,尽管string sList[]
应该是string *sList
。 不要忘记最后的delete [] sList
。
就像许多其他人所说的那样,您可以根据需要使用std::vector
,但是对数组进行一些练习是了解内存管理如何工作的绝佳方法,我鼓励您进一步探索它。
new表达式 (例如new string[size]
)返回一个指向动态分配对象的指针。 在这种情况下,它返回一个指向动态分配数组中第一个string
对象的指针。 因此,要使其工作, sList
应该是一个指针:
string* sList;
重要的是要记住,必须始终delete
/ delete[]
和使用new
/ new[]
创建的对象。 因此,您必须在某些时候delete[] sList
。 如果不这样做,分配给string
s的内存将“从不”释放。
但是,如果您使用std::vector<std::string>
而不是自己进行动态分配,则情况会更好。
在C ++中执行此操作的正确方法:
#include <string>
#include <vector>
std::vector<std::string> sList;
void init(unsigned int size = 1)
{
sList.resize(size);
}
int main()
{
init(25);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.