据我所知,如果我不存储指针,C++ 中的所有内容都会被复制,这会导致性能不佳(忽略我示例的简单性)。所以我想我将我的对象存储为指针而不是 vector 中的字符串对象,这对性能更好吗? (假设我有很长的字符串并且有很多)。
当我尝试遍历我的字符串指针 vector 时出现的问题是我无法从中提取实际值
string test = "my-name";
vector<string*> names(20);
names.push_back(&test);
vector<string*>::iterator iterator = names.begin();
while (iterator != names.end())
{
std::cout << (*iterator) << ":" << std::endl;
// std::cout << *(*iterator); // fails
iterator++;
}
看到注释行,我在接收字符串指针时没有问题。但是,当我尝试获取字符串指针值时,出现错误(我找不到具体的错误,但程序失败了)。
我还尝试将 (iterator) 存储在一个新的字符串 变量中,但它没有帮助?
最佳答案
您已经创建了 vector 并将其初始化为包含 20 个项目。这些项目被默认初始化,在指针的情况下是空指针。该程序在取消引用这些空指针时遇到问题。
一条建议是,在您有明确的问题之前,不要担心什么是最有效的。使用 vector<string>
时,此代码肯定会更好地工作与 vector<string*>
.
关于C++ vector 和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5637999/