Tag: 向量

将vector附加到vector

假设我有2个标准向量: vector<int> a; vector<int> b; 我们还要说,这两者都有大约30个元素。 如何将向量b添加到向量a的末尾? 肮脏的方式将通过b迭代,并通过vector<int>::push_back()添加每个元素,但我不想这样做!

当向量被分配时,他们是否使用堆或堆栈上的内存?

以下所有的陈述是正确的吗? vector<Type> vect; //allocates vect on stack and each of the Type (using std::allocator) also will be on the stack vector<Type> *vect = new vector<Type>; //allocates vect on heap and each of the Type will be allocated on stack vector<Type*> vect; //vect will be on stack and Type* will be on heap. 在vector或任何其他STL容器中Type的内存是如何分配的?

在vector或列中find第二个(第三…)最高/最低值的最快方法

R提供了最大值和最小值,但是除了sorting整个向量和从这个向量中select值x之外,我没有看到一个非常快速的方法来查找另一个值。 有更快的方法来获得第二高的价值(例如)? 谢谢

将文件读入std :: vector <char>的有效方法?

我想避免不必要的副本。 我正在瞄准的东西: std::ifstream testFile( "testfile", "rb" ); std::vector<char> fileContents; int fileSize = getFileSize( testFile ); fileContents.reserve( fileSize ); testFile.read( &fileContents[0], fileSize ); (这不起作用,因为reserve实际上并没有插入任何东西,所以我不能访问[0] )。 当然, std::vector<char> fileContents(fileSize)可以工作,但是初始化所有元素会有开销( fileSize可能比较大)。 相同的resize() 。 这个问题并不那么重要,这将是开销。 相反,我只是想知道是否有另一种方式。

减lessstl向量的容量

有没有办法减lessvector的容量? 我的代码将值插入到一个向量中(事先不知道它们的数量),当这些完成时,向量仅用于读取操作。 我想我可以创build一个新的vector,做一个.reseve()的大小和复制项目,但我不喜欢额外的复制操作。 PS:我不关心便携式解决scheme,只要它适用于gcc。

假设STLvector存储总是连续的,是否安全?

如果你有一个已经resize的STL向量,可以安全地取出元素0的地址,并假设向量的其余部分将在内存中? 例如 vector<char> vc(100); // do some stuff with vc vc.resize(200); char* p = &vc[0]; // do stuff with *p

如何从多个向量中find共同的元素?

任何人都可以告诉我如何从多个向量find共同的元素? a <- c(1,3,5,7,9) b <- c(3,6,8,9,10) c <- c(2,3,4,5,7,9) 我想从上面的向量中获得共同的元素(例如:3和9)

std :: vector :: resize()与std :: vector :: reserve()

在这篇文章的评论部分有一个关于使用std::vector::reserve()和std::vector::resize()的线程。 这是原始代码: void MyClass::my_method() { my_member.reserve(n_dim); for(int k = 0 ; k < n_dim ; k++ ) my_member[k] = k ; } 我相信要写vector元素,正确的做法是调用std::vector::resize() ,而不是std::vector::reserve() 。 事实上,以下testing代码在VS2010 SP1的debugging版本中“崩溃”: #include <vector> using namespace std; int main() { vector<int> v; v.reserve(10); v[5] = 2; return 0; } 我是对的,还是我错了? 和VS2010 SP1是对的,还是错了?

vector <bool>的替代方法

作为(希望),我们都知道, vector<bool>完全破坏,不能被视为交stream数组。 什么是获得这个function的最好方法? 到目前为止,我所想到的想法是: 或者使用一个vector<char> 使用包装类,并有vector<bool_wrapper> 你们如何处理这个问题? 我需要c_array()function。 作为一个侧面的问题,如果我不需要c_array()方法,如果我需要随机访问,解决这个问题的最好方法是什么? 我应该使用一个deque或其他东西? 编辑: 我确实需要dynamic的大小。 对于那些不知道的人来说, vector<bool>是专用的,所以每个bool需要1位。 因此你不能把它转换成一个c样式的数组。 我想“包装”是一个误用。 我在想这样的事情: 当然,然后我必须读取到my_bool由于可能的alignment问题:( struct my_bool { bool the_bool; }; vector<my_bool> haha_i_tricked_you;

vector与STL中的列表

我注意到有效的STL vector是默认应该使用的序列的types。 这是什么意思? 似乎忽略效率vector可以做任何事情。 任何人都可以向我提供一个场景, vector不是一个可行的select,但必须使用list ?