C++ 我可以用指针创建一个数组变量吗?怎么用?
现在,我有一个称为“list”的向量,包含1000个String类型的元素。 这个向量由一个递归函数动态填充,该函数在一个目录中发现文件并加载文件C++ 我可以用指针创建一个数组变量吗?怎么用?,c++,arrays,pointers,C++,Arrays,Pointers,现在,我有一个称为“list”的向量,包含1000个String类型的元素。 这个向量由一个递归函数动态填充,该函数在一个目录中发现文件并加载文件 我可以使用数组来保存只占用所需最小存储空间的元素列表吗?如何创建?您完全可以创建指向std::string元素的指针数组 这些元素仍然会占用内存空间,所以如果你的目标是节省空间,你可以忘记这个策略 节省空间的一个简单方法是不要让向量以1000大小开始。向量只占用最小的空间,然后增长。这是他们的设计目标之一。您完全可以创建指向std::string元素
我可以使用数组来保存只占用所需最小存储空间的元素列表吗?如何创建?您完全可以创建指向std::string元素的指针数组 这些元素仍然会占用内存空间,所以如果你的目标是节省空间,你可以忘记这个策略
节省空间的一个简单方法是不要让向量以1000大小开始。向量只占用最小的空间,然后增长。这是他们的设计目标之一。您完全可以创建指向std::string元素的指针数组 这些元素仍然会占用内存空间,所以如果你的目标是节省空间,你可以忘记这个策略
节省空间的一个简单方法是不要让向量以1000大小开始。向量只占用最小的空间,然后增长。这是他们的设计目标之一。通过将每个字符串存储在包含根据字符串长度分配的char[]和指向下一个节点的指针(即单链接列表)的节点中,可以实现较小的内存占用
也就是说:为什么要担心中等长度的O(1000)个字符串呢?通过将每个字符串存储在一个节点中,该节点包含一个根据字符串长度分配的char[]和一个指向下一个节点的指针(即单链接列表),可以实现较小的内存占用 也就是说:为什么要担心长度适中的O(1000)个字符串呢?您可以通过以下操作:
std::string * list = new std::string[1000];
然后,请记住:
delete [] list;
但是如果你要动态地做这件事,那么向量会更好。当您可能只需要300个元素时,为什么要分配1000个元素?也不确定为什么要在此处使用指针。您可以执行以下操作:
std::string * list = new std::string[1000];
然后,请记住:
delete [] list;
但是如果你要动态地做这件事,那么向量会更好。当您可能只需要300个元素时,为什么要分配1000个元素?也不太清楚为什么要在这里使用指针。如果元素的数量是静态的,是的,应该使用数组而不是向量。@Michael他是这么问的吗?很明显,如果扫描目录,它不是静态的。@W.B.是的,它可能不是静态的,但他也指定有1000个元素。@Michael抱歉,我的意思是我现在有一个包含1000个元素的数组/向量,我想做的是确保它以最好的方式适合内容。我选择1000是因为它只是我的笔驱动器上出现的歌曲的最大数量。如果你有一个静态的元素数,是的,你应该使用数组而不是向量。@Michael,这就是他要问的吗?很明显,如果扫描目录,它不是静态的。@W.B.是的,它可能不是静态的,但他也指定有1000个元素。@Michael抱歉,我的意思是我现在有一个包含1000个元素的数组/向量,我想做的是确保它以最好的方式适合内容。我选择1000首,因为这是我笔下最多的歌曲数。谢谢你的帮助!我不知道“节点”列表。他们马上就去钻研。谢谢你的帮助!我不知道“节点”列表。他们马上就去钻研。