Tag: stl

为什么不std :: queue :: pop返回值。

我经历了这个页面,但我无法得到相同的理由。 那里有提到 “它是更明智的,它根本不返回任何价值,并要求客户使用前()检查队列前面的值” 但是从front()检查一个元素也需要该元素在左值被复制。 例如在这个代码段 std::queue<int> myqueue; int myint; int result; std::cin >> myint; myqueue.push (myint); / *这里临时将在RHS上创build,这将被分配给结果,并且如果通过引用返回,则结果将在popup操作后被渲染为无效* / result = myqueue.front(); //result. std::cout << ' ' << result; myqueue.pop(); 在第五行cout对象首先创buildmyqueue.front()的副本,然后将其分配给结果。 所以,差异是什么,popupfunction可以做同样的事情。

如何在C ++中遍历一个充满string的STL映射

我有以下问题相关迭代使用std :: map定义的string的关联数组。 — snip — class something { //… private: std::map<std::string, std::string> table; //… } 在构造函数中,我使用与string数据关联的string键来填充表。 在其他地方,我有一个toString方法,它返回一个string对象,该对象包含表格对象中包含的所有关键字和关联数据(如key =数据格式)。 std::string something::toString() { std::map<std::string, std::string>::iterator iter; std::string* strToReturn = new std::string(""); for (iter = table.begin(); iter != table.end(); iter++) { strToReturn->append(iter->first()); strToReturn->append('='); strToRetunr->append(iter->second()); //…. } //… } 当我试图编译时,我得到以下内容 错误:“错误:调用不匹配”(std :: basic_string,std :: allocator>)()'“。 有人可以向我解释什么是错过的,我做错了什么? 在hash_map的情况下,我只find了一些有关类似问题的讨论,其中用户必须定义​​一个哈希函数来使用hash_map和std :: […]

我应该从使用boost :: shared_ptr切换到std :: shared_ptr?

我想用-std=c++0x在GCC中启用对C ++ 0x的支持。 我并不一定需要GCC 4.5(和4.6版本)中目前支持的C ++ 11特性 ,但我想开始习惯它们。 例如,在我使用迭代器的一些地方, autotypes会很有用。 但是,我不需要任何当前支持的function。 这里的目标是鼓励我将新标准的特征融入到我的编程“词汇”中。 从你所了解的C ++ 11的支持中,在GCC中启用它是一个好主意,然后通过例如从使用boost::shared_ptr到std::shared_ptr ,混合? PS:我知道这个比较不同风格的shared_ptr 好问题 ,但是我要求在标准最终确定之前就要使用哪个更高层次的build议。 另外一种方法是,像GCC这样的编译器说它支持“实验性function”,这是否意味着在编译期间我可能会遇到奇怪的错误,这将是主要的时间和StackOverflow的隐藏问题的来源? 编辑 :我决定从std::shared_ptr切换回来,因为我不相信它在GCC 4.5中的支持, 如在这个问题中的示例所示 。

我应该使用哪一个STL容器作为FIFO?

哪个STL容器最适合我的需求? 我基本上有一个10个元素的容器,在这个容器中我不断push_back新元素,同时pop_front最老的元素(大约一百万次)。 我目前正在使用一个std::deque的任务,但想知道如果一个std::list将更有效,因为我不需要重新分配自己(或者我误解std::deque std::vector ?)。 还是有一个更有效的容器,我的需要? PS我不需要随机访问

为什么没有std :: copy_ifalgorithm?

在C ++中没有std :: copy_ifalgorithm有什么特别的原因吗? 我知道我可以使用std :: remove_copy_if来实现所需的行为。 我认为它是来自C ++ 0x,但是一个简单的copy_if,它需要一个范围,一个输出迭代器和一个函数。 它只是简单地错过了或者有其他原因背后呢?

UTF8到/从STL宽字符转换

是否有可能将std :: string中的UTF8string转换为std :: wstring,反之亦然? 在Windows应用程序中,我将使用MultiByteToWideChar和WideCharToMultiByte。 但是,代码是为多个操作系统编译的,而我仅限于标准的C ++库。

“现代C ++”的实例?

我一直在使用更多的“现代”c ++结构,但表面上并不是无处不在。 我正在寻找开源项目来研究现代C ++和STL用法的很好的例子。 像Meyer的“Effective STL”中提到的那样,例如试图避免循环并用更多的函数结构replace它们,使用boost :: bind和boost :: function等。这些对我来说仍然有点不自然,当我必须快速完成某些工作时,我倾向于退回到libc和string.h(当我从寒冷的手中撬出来的时候,可以准备好我的工作)。 不过,我也有积极的经验,发现什么是简化的剧烈变化,因为我已经使用了这些构造,或者能够用几行代码来实现,因为我有正确的操作符和函数。 另外,我最近一直在关注并发性,所以这对我来说变得更加重要。 您能否推荐一些精心编写的开源项目的例子,这些项目大量使用了STL和其他可以学习的现代c ++技术? 我特别感兴趣的应用程序代码,浏览boost源已经很有帮助,但它是必要的非常一般,因为它是库代码。 我对中型到大型项目感兴趣,至less有几万行。 find长达几百行的示例非常简单,但这不是太有用。

如何selectmap和unordered_map?

假设我想用一个string作为关键字映射数据。 我应该select什么容器, map或unordered_map ? unordered_map占用更多的内存,所以我们假设内存不是问题,关心的是速度。 unordered_map应该通常给O(1)的平均复杂度O(n)的最坏情况。 在什么情况下会到达O(n)? 什么时候map比unordered_map更省时? 当n很小时会发生吗? 假设我将使用STL unordered_map与默认haser Vs. 地图。 string是关键。 如果我要迭代元素而不是每次访问单个元素,我应该更喜欢map吗?

如何将一个列表<T>对象追加到另一个列表中

在C ++中,我有两个list<T>对象A和B ,我想将B所有成员添加到A的结尾。 我search了几个不同的来源,并没有find一个简单的解决scheme(ei A.append(B); ),这让我感到惊讶。 做这个的最好方式是什么? 碰巧,在这之后我不关心B(它会在下一行被删除),所以如果有一种方法可以利用这个来获得更好的性能,我也对此感兴趣。

更新OSX命令行工具6.3后缺lessC ++头<__ debug>

从App Store更新到命令行工具6.3后,内部包含<__ debug>的<vector>或<iterator>程序将导致文件未find错误,如下所示。 该cpp没有什么有趣的,但包括在其中一个包含的标题。 c++ -O3 -I/Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers -L/Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/build/binaries/clusterStaticLibrary /Users/farleylai/Documents/dev/git/ESMS/Optimizer/build/StreamIt/FIR/511/512/combined_threads.cpp -o streamit -lcluster -lpthread -lstdc++ In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/build/StreamIt/FIR/511/512/combined_threads.cpp:9: In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/node_server.h:22: In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/thread_info.h:20: In file included from /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/connection_info.h:19: /Users/farleylai/Documents/dev/git/ESMS/Optimizer/../StreamIt/src/cluster/headers/socket_holder.h:43:25: warning: delete called on 'mysocket' that is abstract but has non-virtual destructor [-Wdelete-non-virtual-dtor] if (!is_mem_socket) delete sock; ^ In file […]