A是set< int>数组,我想把它复制到b.但是.
int main(){
set<int> a[10];
a[1].insert(99);
a[3].insert(99);
if(a[1]==a[3])cout<<"echo"<<endl;
set<int> b[10];
memcpy(b,a,sizeof(a));
if(b[1]==b[3])cout<<"echo"<<endl;// latch up here, what happen?
return 0;}你知道电脑在干什么吗?
发布于 2018-04-09 14:33:49
我假设您使用的“set”类是std::set?是什么使您认为简化对std::set (在本例中为它们的数组)的原始字节的简单记忆将正常工作?这在很大程度上取决于set类的内部结构和实现,并且尝试使用比原语或基元数组更复杂的方法来做这样的事情,几乎可以保证会产生意想不到的结果。在涉及类时执行这种原始字节操作很少是正确的。
要正确地执行此操作,您应该对集合进行迭代,并使用它们的'=‘操作符分配它们,后者知道如何正确地复制内容:
for(int i = 0; i < 10; ++i) {
b[i] = a[i];
}更好的是,您可以使用std::copy:
std::copy(std::begin(a), std::end(a), std::begin(b));https://stackoverflow.com/questions/49734127
复制相似问题