默认的stl优先级队列是最大的一个(Top函数返回最大的元素)。 为简单起见,说这是一个int值的优先级队列。
我有vector<CustomClass*> ,我把很多东西放在向量中,我需要快速访问,所以我不使用列表。 如何设置vector的初始大小(例如,为20000个位置,所以当我插入新的时候避免复制)?
我有一个std::list<double> foo; 我在用着 if (foo.size() >= 2){ double penultimate = *(–foo.rbegin()); } 但是这总是给我一个penultimate的任意值。 我究竟做错了什么?
从我所理解的字节顺序来看,组成多字节字的字节在顺序上是不同的,至less在最典型的情况下是这样。 因此,一个16位整数可能被存储为0xHHLL或0xLLHH 。 假设我没有这个错误,我想知道什么时候Endianness在两台计算机之间发送信息的时候成为一个主要的因素,Endian可能不一样。 如果我发送一个短整数1,以char数组的forms,没有更正,它是否被接收并解释为256? 如果我使用下面的代码分解和重新构造短整数,endianness不再是一个因素? // Sender: for(n=0, n < sizeof(uint16)*8; ++n) { stl_bitset[n] = (value >> n) & 1; }; // Receiver: for(n=0, n < sizeof(uint16)*8; ++n) { value |= uint16(stl_bitset[n] & 1) << n; }; 是否有一个标准的方式来补偿sorting? 提前致谢!
我已经读了几个地方, c_str()和data() (在STL和其他实现)之间的区别是, c_str()总是空终止,而data()不是。 就我在实际实现中看到的,它们要么执行相同的操作,要么调用c_str() 。 我在这里错过了什么? 在哪种情况下使用哪一种更正确?
我注意到,在我的SGI STL参考副本中,有一个关于angular色特征的页面,但我看不到这些是如何使用的? 他们是否replacestring.h函数? 它们似乎不被std::string ,例如std::string的length()方法不使用Character Traits的length()方法。 为什么angular色特质存在,他们曾经在实践中使用?
我有一个值的数组,从我需要存储以供日后处理的程序的不同部分传递给我的函数。 由于我不知道在处理数据之前我的函数会被调用多less次,所以我需要一个dynamic的存储结构,所以我select了一个std::vector 。 我不想做标准循环push_back单独的所有值,这将是很好,如果我可以使用类似于memcpy全部复制它。
由于在堆栈中使用容器的唯一操作是: 背部() 推回() pop_back() 为什么默认的容器是deque而不是vector? 不要deque reallocations在front()之前给出一个元素的缓冲区,这样push_front()是一个高效的操作? 这些元素是不是浪费了,因为他们永远不会在堆栈的情况下使用? 如果使用这种方式代替vector没有任何开销,为什么priority_queuevector的默认值也不是一个deque? (priority_queue需要front(),push_back()和pop_back() – 与堆栈基本相同) 根据下面的答案更新: 看来deque通常被实现的方式是固定大小数组的可变大小的数组。 这使得增长速度比一个向量(需要重新分配和复制)要快,所以对于像堆栈这样的东西来说,添加和删除元素,deque可能是更好的select。 priority_queue需要大量索引,因为每个删除和插入都需要运行pop_heap()或push_heap()。 这可能会使向量成为更好的select,因为添加元素仍然是不变的。
我需要检查一个std:string是否以“xyz”开头。 我怎么做,而不search整个string或使用substr()创build临时string。
我记得第一次学习STL中的vector,经过一段时间后,我想为我的一个项目使用一个boolsvector。 在看到一些奇怪的行为并做了一些研究之后,我了解到一个bools向量并不是真正的bools向量 。 在C ++中是否还有其他常见的陷阱?