Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 向量优化-简单方法_C++_Optimization_Vector - Fatal编程技术网

C++ 向量优化-简单方法

C++ 向量优化-简单方法,c++,optimization,vector,C++,Optimization,Vector,我对以下情况有疑问; 假设我想定义一个向量向量来表示一组元素,我可以添加数据,并可以使用这些元素来计算其他的东西。那我就不再需要那个向量了。然后,假设我想将另一组数据作为向量的向量,那么我可以重用先前创建的变量,然后 (1) 如果我创建了向量的向量作为动态内存,并删除了 vector<vector<double> > *myvector = new vector<vecctor<double> >; //do push back and use i

我对以下情况有疑问; 假设我想定义一个向量向量来表示一组元素,我可以添加数据,并可以使用这些元素来计算其他的东西。那我就不再需要那个向量了。然后,假设我想将另一组数据作为向量的向量,那么我可以重用先前创建的变量,然后

(1) 如果我创建了向量的向量作为动态内存,并删除了

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