gpt4 book ai didi

C++ vector 和指针

转载 作者:行者123 更新时间:2023-11-30 00:58:44 24 4
gpt4 key购买 nike

据我所知,如果我不存储指针,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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com