0

假设我需要在我的向量中存储长字符串。我可以将其声明为向量。然而,更好的方法是存储指向这些字符串而不是实际字符串的指针。

所以我的声明应该是类似于向量的东西吗?我只是做一些类似的事情:

LOOP
//Accept String from a file in myString
vector<string *> v1;
string * sample = &myString;
v1.push_back(sample);
END LOOP

这是合适的还是他们存在更好的方法来实现这一目标?我什至可能完全错了。

4

2 回答 2

9

没有理由存储指向字符串的指针。 std::string无论如何都会将堆分配的内存用于“长”字符串,因此通过在容器中存储指针来获得的唯一好处就是自己管理内存的麻烦。

另一方面,如果您需要在多个位置复制这些长字符串,您可以在向量中保留指向字符串的共享指针:

std::vector<std::shared_ptr<std::string>>;
于 2012-08-02T14:37:17.577 回答
4

然而,更好的方法是存储指向这些字符串而不是实际字符串的指针。

我真的很怀疑。除非您有充分的理由使用指针,否则请std::vector<std::string>改用。

于 2012-08-02T14:38:20.127 回答