外贸网站 有哪些,信息技术网站建设,采招网,wordpress layui动态数组分配的大小默认为2的n次方1#xff0c;2#xff0c;4#xff0c;8... 在main中创建的vertices#xff0c;push需要放到Vertex中#xff08;copy#xff09;#xff0c;下一次copy是因为要调整vertices的大小 vertices.push_back(Vertex(1,2,3));//拷贝 第一次248... 在main中创建的verticespush需要放到Vertex中copy下一次copy是因为要调整vertices的大小 vertices.push_back(Vertex(1,2,3));//拷贝 第一次容量为1拷贝进去调用一次 vertices.push_back(Vertex(4,5,6));//拷贝 第二次容量调整为2包含了新的数组内容copy一次再拷贝旧的容量1到 新的容量为2的数组里面调用一次 共两次copy vertices.push_back(Vertex(7,8,9));//拷贝 第三次容量调整为4包含了新的数组内容copy一次拷贝旧的容量2里面的两次数字调用两次 共两次copy vertices.push_backVertex(10,11,12));//拷贝 第四次拷贝新的数组到容量4里面去调用两次 共1次copy 题外话我觉得理解这个蛮重要的理解怎么运作才可以优化
#include string
#include iostream
#include vector//动态数组的优化struct Vertex
{float x,y,z;//找变量在内存的位置Vertex(float x,float y,float z):x(x),y(y),z(z){}Vertex(const Vertex vertex):x(vertex.x),y(vertex.y),z(vertex.z)//每次拷贝一个数组x,y,z{std::coutcopystd::endl;}};int main()
{std::vectorVertexvertices;//定义一个动态大小的数组 内存连续std::vectorVertexvertices2;//普通方法//动态数组分配的大小默认为2的n次方1248...//在main中创建的verticespush需要放到Vertex中copy下一次copy是因为要调整vertices的大小vertices.push_back(Vertex(1,2,3));//拷贝 第一次容量为1拷贝进去调用一次vertices.push_back(Vertex(4,5,6));//拷贝 第二次容量调整为2包含了新的数组内容copy一次再拷贝旧的容量1到 新的容量为2的数组里面调用一次 共两次copyvertices.push_back(Vertex(7,8,9));//拷贝 第三次容量调整为4包含了新的数组内容copy一次拷贝旧的容量2里面的两次数字调用两次 共两次copyvertices.push_back(Vertex(10,11,12));//拷贝 第四次拷贝新的数组到容量4里面去调用两次 共1次copystd::coutstd::endl;//优化vertices2.reserve(4);//设置固定容量四次修改四次copy emplace_back直接传递构造函数的参数列表直接使用vector的内存 而不是main中copy到vertex//此时直接使用emplace_back后直接传递而不是copy就不再调用copy了vertices2.emplace_back(1,2,3);vertices2.emplace_back(4,5,6);vertices2.emplace_back(7,8,9);vertices2.emplace_back(10,11,12);std::cin.get();
}