gpt4 book ai didi

c++ - 将数据放入 C++ 中的 std::vector 是否会创建数据的拷贝?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:49 25 4
gpt4 key购买 nike

我对创建一个新的 std::vector(或调用它的 assign 方法)创建数据的拷贝感兴趣吗?

例如,

void fun(char *input) {
std::vector<char> v(input, input+strlen(input));
// is it safe to assume that the data input points to was COPIED into v?
}

最佳答案

是的。元素总是被复制到 STL 容器中或从中复制出来。 (至少在 C++0x 中添加移动语义之前)

编辑:以下是测试复制自己的方法:

#include <vector>
#include <iostream>

class CopyChecker
{
public:
CopyChecker()
{
std::cout << "Hey, look! A new copy checker!" << std::endl;
}
CopyChecker(const CopyChecker& other)
{
std::cout << "I'm the copy checker! No, I am! Wait, the"
" two of us are the same!" << std::endl;
}
~CopyChecker()
{
std::cout << "Erroap=02-0304-231~No Carrier" << std::endl;
}
};

int main()
{
std::vector<CopyChecker> doICopy;
doICopy.push_back(CopyChecker());
}

输出应该是:

Hey, look! A new copy checker!
I'm the copy checker! No, I am! Wait, the two of us are the same!
Erroap=02-0304-231~No Carrier
Erroap=02-0304-231~No Carrier

关于c++ - 将数据放入 C++ 中的 std::vector 是否会创建数据的拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3209646/

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