C++ 向量优化-简单方法
我对以下情况有疑问; 假设我想定义一个向量向量来表示一组元素,我可以添加数据,并可以使用这些元素来计算其他的东西。那我就不再需要那个向量了。然后,假设我想将另一组数据作为向量的向量,那么我可以重用先前创建的变量,然后 (1) 如果我创建了向量的向量作为动态内存,并删除了C++ 向量优化-简单方法,c++,optimization,vector,C++,Optimization,Vector,我对以下情况有疑问; 假设我想定义一个向量向量来表示一组元素,我可以添加数据,并可以使用这些元素来计算其他的东西。那我就不再需要那个向量了。然后,假设我想将另一组数据作为向量的向量,那么我可以重用先前创建的变量,然后 (1) 如果我创建了向量的向量作为动态内存,并删除了 vector<vector<double> > *myvector = new vector<vecctor<double> >; //do push back and use i
vector<vector<double> > *myvector = new vector<vecctor<double> >;
//do push back and use it
delete myvector;
vector*myvector=新向量;
//一定要往后推并使用它
删除myvector;
然后再重复使用
(2) 如果我把向量的向量创建为
vector<vector<double> > myvector;
//do push back and use it
myvector.clear();
向量myvector;
//一定要往后推并使用它
myvector.clear();
然后再重复使用
但是,我猜在这两种方法中,虽然我们已经删除了内存,但剩下的内存却很少。那么,我想知道什么是定义这个向量的有效方法
(3) 如果内部向量的大小始终为2,那么使用它是否仍然有效
通过定义向量的向量
vector myvector(my_list.size(),vector(2))
其他容器类型
(4) 如果我使用预定义的另一个类来容纳2个元素,然后将这些对象类型的向量作为(例如XY是可以容纳2个元素的类,可以作为数组)
向量;
我希望,请任何人评论我什么将是最有效的方法(从1-4)方面的速度和内存需要。有没有更好的办法,请你也推荐我。谢谢如果您只需要两个元素,最有效的方法可能是:
std::vector<std::tr1::array<double, 2>> myvector;
// or std::vector<std::pair<double, double>> myvector;
// use it
myvector.clear(); // This will not deallocate any memory, so what has alrdy been allocated will be used for future push_backs
std::vector myvector;
//或者std::vector myvector;
//使用它
myvector.clear();//这不会取消分配任何内存,因此已分配的内存将用于将来的推送
如果这是家庭作业(或不是),并且您想知道哪个更快,那么您应该尝试:在循环中运行“push back and clear”或“new and delete”几百万次,并计时执行。我怀疑是2。会快一点
你说你想容纳一组元素,并且内向量的大小是2。
这有点模棱两可,但您可以进一步检查两件事:
1.std::pair,如果您的“元素”包含两个其他“东西”
2.如果要基于另一个“元素”的值引用“元素”,请使用std::map
std::vector<std::tr1::array<double, 2>> myvector;
// or std::vector<std::pair<double, double>> myvector;
// use it
myvector.clear(); // This will not deallocate any memory, so what has alrdy been allocated will be used for future push_backs