集合中内置对象的C ++生命周期

时间:2017-05-09 12:11:30

标签: c++

我有以下代码

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;?

2 个答案:

答案 0 :(得分:2)

由于您的变量的定义,您按值存储std::string个对象

std::vector<std::string> all_strings;

这意味着vector 拥有字符串的副本,当它超出范围时会被销毁。

答案 1 :(得分:1)

是的,push_back会获取std::string的副本并将其存储在vector中。