gpt4 book ai didi

c++ - 重新分配 vector 后, vector 中的内存会发生什么情况

转载 作者:行者123 更新时间:2023-12-02 09:50:36 24 4
gpt4 key购买 nike

如果将 vector myv及其使用的内存重新分配给另一个 vector ,将会发生什么情况?更重要的是,将 vector 作为对重新分配 vector 的函数的引用时,会发生什么?它仅仅是一个复制类型的操作,还是传入的 vector 引用了右侧 vector ?如果该右侧 vector 超出范围怎么办?

TLDR:这实际上完成了什么?

#include <iostream>
#include <string>
#include <vector>
#include <stdio.h>
#include <stdlib.h>

std::vector<std::vector<int> > vectors;

void SetVector(std::vector<int> &v){
v = vectors.at(0);
}

int main()
{
std::vector<int> ints;
ints.push_back(1);
ints.push_back(1);
ints.push_back(1);

vectors.push_back(ints);

std::vector<int> myv;
myv.push_back(6);
myv.push_back(6);
myv.push_back(6);
myv.push_back(6);

SetVector(myv);

for(size_t i = 0; i < myv.size(); i++){
std::cout << myv[i] << std::endl;
}
}

最佳答案

这将调用传递给SetVector的 vector 的赋值运算符。等效于myv = vectors.at(0)。在将myv中的值复制到其中之前,vector实现将处理管理vectors.at(0)的内存(如果需要,则释放)。

关于c++ - 重新分配 vector 后, vector 中的内存会发生什么情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59791346/

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