我有以下代码
void my_func() {
std::vector<std::string> all_strings;
for (int i = 0 ; i < 10 ; i++) {
// "loop a"
all_strings.push_back(std::to_string(i));
}
for (const std::string& str : all_strings) {
// "loop b"
std::cout << str << std::endl;
}
}
我创建了字符串并将它们分配到&#34中的向量中;循环a&#34;。问题是,我是否可以在&#34;循环b&#34;中访问这些向量值,其中对象在本地和内部创建&#34;循环a&#34;已经不见了。
换句话说,是否将字符串复制到&#34中的向量中?循环a&#34;?
答案 0 :(得分:2)
由于您的变量的定义,您按值存储std::string
个对象
std::vector<std::string> all_strings;
这意味着vector
拥有字符串的副本,当它超出范围时会被销毁。
答案 1 :(得分:1)
是的,push_back
会获取std::string
的副本并将其存储在vector
中。