我不太了解C ++数据结构,但是我想知道你(程序员)使用STL还是编写你自己的代码? 毕竟STL是专门用来做search,replace等等任务的。 有人真的不需要学习很多关于链表,二进制search和更多,因为我可以使用STL。 你会build议什么?
每个人都从std::initializer_list创buildstd::vector ,但是std::initializer_list呢? 例如。 如果你使用std::initializer_list作为参数: void someThing(std::initializer_list<int> items) { … } 有些时候,你有你的项目在一个vector<T>而不是一个文字列表: std::vector<int> v; // populate v with values someThing(v); // boom! No viable conversion etc. 更一般的问题是:如何从STL迭代中创build一个stl::initializer_list ,而不仅仅是std::vector 。
刚刚在我公司的源代码中遇到了end()迭代器的递减,这对我来说看起来很奇怪。 据我记忆,这是在一些平台上工作,但不为其他人。 也许我错了,但是我找不到任何有用的标准。 标准只说end()返回一个迭代器,它是过去的最终值,但是它保证是可减less的? 这样的代码如何符合标准? std::list<int>::iterator it = –l.end(); 提前致谢。
如果我交换两个向量,它们的迭代器是否仍然有效,现在只是指向“其他”容器,或迭代器是否失效? 也就是说,给出: using namespace std; vector<int> x(42, 42); vector<int> y; vector<int>::iterator a = x.begin(); vector<int>::iterator b = x.end(); x.swap(y); // a and b still valid? Pointing to x or y? 这似乎没有提到这一点: [n3092 – 23.3.6.2] void swap(vector<T,Allocator>& x); 效果:将* this的内容和容量()与x的内容和容量()交换。 请注意,因为我在VS 2005中,我也对迭代器debugging检查等的影响感兴趣(_SECURE_SCL)
我总是遵循以下types的代码警告。 std::vector v; for ( int i = 0; i < v.size(); i++) { } warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data 我明白size()返回size_t ,只是想知道这是安全的忽略这个警告,或者我应该让所有我的循环variables的size_ttypes
设v1为目标vector,v2需要追加到它的后面。 我现在在做: v1.reserve(v1.size() + v2.size()); copy(v2.begin(), v2.end(), back_inserter(v1)); 这是最有效的方法吗? 或者可以通过复制一块内存来完成? 谢谢!
毫无疑问,我会select在大多数C ++编程项目中使用STL。 最近有人问我这个问题:“有没有什么情况下你不会使用STL?” 我越想到,我意识到也许应该是我select不使用STL的情况…例如,一个非常大的,长期的项目,其代码库预计将持续数年……也许自定义的容器解决scheme,恰好符合项目需求是值得的初始开销? 你怎么看,有什么情况下你会select不STL?
我可以通过迭代器(如vector )在c ++中遍历标准的priority_queue或标准queue吗? 我不想使用popup,因为它导致我的队列出列。 谢谢你的帮助
通常,使用sorting的std::vector而不是std::set会更高效。 有没有人知道一个库类sorted_vector ,它基本上有一个类似std::set接口,但插入元素到sorting的向量(所以没有重复),使用二进制search来find元素等? 我知道这不难写,但最好不要浪费时间,而是使用现有的实现。 更新:使用sorting向量而不是集合的原因是:如果您有几十万个只包含10个左右成员的小集合,那么只需使用sorting向量就可以提高内存效率。
我在用 unordered_map<string, int> 和 unordered_map<int, int> 每种情况下使用什么散列函数,每种情况下碰撞的机会是多less? 我将分别插入唯一的string和唯一的int作为键。 我有兴趣知道散列函数在string和整型键以及它们的碰撞统计量的情况下的algorithm。