c ++向量和指针

Mad*_*sen 1 c++

据我了解,如果我不存储指针,c ++中的所有内容都会被复制,这会导致性能不佳(忽略我的示例的简单性).所以我认为我将我的对象存储为指针而不是我的向量中的字符串对象,那对性能更好吗?(假设我有很长的琴弦和很多琴弦).

当我尝试迭代我的字符串指针向量时的问题是我无法从它们中提取实际值

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++;
}
Run Code Online (Sandbox Code Playgroud)

看到注释行,我在接收字符串指针时没有问题.但是,当我尝试获取字符串指针值时,我得到一个错误(我无法找到错误的错误,但程序失败了).

我也尝试在一个新的字符串变量中存储(迭代器),但它没有帮助?

Mar*_*som 5

您已创建向量并将其初始化为包含20个项目.这些项目是默认初始化的,在指针的情况下是空指针.该程序在解除引用这些空指针时遇到问题.

一条建议就是在你遇到问题之前不要担心什么是最有效的.vector<string>对于a而言,此代码肯定会更好vector<string*>.