在函数中传递向量

时间:2017-08-09 01:00:18

标签: c++ performance vector

晚上好。我正在尝试减少代码的处理时间,并且我意识到传递在每个循环之后不断增长的2维向量会增加处理时间。有没有办法增加向量的访问时间,或者我应该考虑一个新的容器(即列表,双端队列等) 以下是我的代码示例:

这是我的功能:

bool MyFunction(std::vector < std::vector <int> > &p_vector2, std::vector <int> &p_vector, int p)

std::vector < std::vector <int> > &p_vector2每个循环增加1个向量。

谢谢。

2 个答案:

答案 0 :(得分:0)

我会考虑使用vector的resize()方法,而不是通过push_back或类似方法逐个添加。调整大小会事先分配空间,因此您不必为每个项目分配新的内存。

http://www.cplusplus.com/reference/vector/vector/resize/

要考虑的另一个选择是在函数调用之前分配子向量,并使向量向量仅维护指针。你需要自己进行客观破坏。

答案 1 :(得分:0)

使用新容器将无济于事,除非您使用数组(这与其他数据完全不同)。 将代码更改为new std::vector <int>()可以解决您的问题,但请小心;现在你的矢量的每个新成员都不仅仅是其他东西的副本,但它是另一个矢量本身。因此,如果您的向量是在作用域中定义的并且作用域结束,则c ++将简单地删除向量,并且您将无法作为向量的成员(=&gt;运行时错误)。

我建议你每次要声明一个向量以使用父向量时都使用new,这样你就克服了以前的问题,但是你应该使用delete来释放内存或你的代码会有内存泄漏。

如果我在你的鞋子里,我会更多地阅读关于指针以及如何使用它们,因为{{1}}会返回指针,如果你不进一步研究,你可能会遇到困难。