stl相关内容

向量的编译问题<auto_ptr<>>

考虑以下代码: #include #include #include 使用命名空间标准;结构 A{诠释一个;A(int a_):a(a_) {}};主函数(){向量>作为;for (int i = 0; i >::iterator it = as.begin(); it != as.end(); ++it)cout 在尝试编译它时, ..
发布时间:2022-01-23 20:54:37 C/C++开发

为什么堆栈<const string>不在 g++ 中编译?

我在为大型(相对于我们团队的规模)项目维护端口时遇到了这个问题,但创建一个小示例很简单.stackoverflow.cpp: #include#include#include使用命名空间标准;int main (int argc, char *argv[]) {堆栈堆栈;字符串 str("你好,世界");strstack.push(str);cout 看起来正确,对吧?MSVS ..
发布时间:2022-01-23 20:27:44 C/C++开发

将 std::stack 复制到 std::vector

标准是否保证以下代码可以工作(假设 st 不为空)? #include #include 主函数(){外部 std::stack;>英石;int* end = &st.top() + 1;int* begin = end - st.size();std::vector堆栈内容(开始,结束);} 解决方案 是的. std::stack 只是一个容器适配器 ..
发布时间:2022-01-22 12:51:06 C/C++开发

使用 std::stack 而不是 deque、vector 或 list 有什么优点和缺点

我正在编写一个非常简单的 std::stack ,使用向量作为其底层容器.我意识到我可以用向量容器的 push_back()、pop_back() 和 back() 替换所有的 push()、pop() 和 top() 函数. 我的问题是:当底层容器的受控使用足够时,为什么还要使用容器适配器?为什么不只使用双端队列、向量或列表?会不会浪费内存或处理时间? 解决方案 当您的代码显示 s ..
发布时间:2022-01-22 12:40:16 C/C++开发

是否有一个使用 alloca 并且符合 C++ STL 的分配器?

我有两个问题: 1) 是否可以实现一个使用 alloca 在堆栈上分配内存并且符合 C++ STL 的分配器? 如果那里有代码,您只需将我指向 URL 即可让我开心.:-)如果没有代码,也许你可以画出函数分配和解除分配? 2) 如果上述问题的答案是“是",我想了解如何在堆栈上为类成员分配内存.例如,考虑一个 std::vector> 并假设调用此向量的成员函数“resize" ..
发布时间:2022-01-22 12:31:39 C/C++开发

C++ STL栈问题:栈为空为什么pop()不抛出异常?

如果堆栈为空且没有可弹出的内容,为什么 std::stack::pop() 不抛出异常? (我正在为我自己的代码设计一个专门的堆栈,并且想知道这种方法(需要手动检查堆栈是否为空)与抛出异常之间的权衡. 我的猜测是,尽管 C++ 支持异常处理,但它的运行时开销很小,因此,为了获得最佳性能,决定不在 std::stack::pop 中抛出异常). 解决方案 你是对的.C++ 标准总 ..
发布时间:2022-01-22 12:21:29 C/C++开发

试图访问 std::stack 的索引

void PDA::parse(vector words){for(int i=0; i 我收到这些错误 PDA.cpp:25: error: no match for â((PDA*)this)->PDA::stack[j]â 中的“operator[]âPDA.cpp:26: error: no match for 'operator[]' in â((PDA*)this)->PDA:: ..
发布时间:2022-01-22 12:18:46 C/C++开发

为什么 std::queue 使用 std::dequeue 作为底层默认容器?

如阅读 cplusplus.com,std::queue 实现如下: 队列被实现为容器适配器,它们是类使用特定容器类的封装对象作为其底层容器,提供一组特定的成员函数访问它的元素.元素被推入特定容器并从其“前面"弹出. 底层容器可能是标准容器类之一模板或其他一些专门设计的容器类.这底层容器应至少支持以下操作: ...... 标准容器类 deque 和 list 满足这些要求要 ..
发布时间:2022-01-21 12:22:26 C/C++开发

std::queue<T, list<T>>::size() 在 O(n) 中很慢?

我的代码使用队列时遇到了意外的性能行为.我意识到当队列中有更多元素时性能会下降.事实证明,使用 size() 方法是原因.这是一些显示问题的代码: #include #include #include #include "秒表.h"使用命名空间标准;结构大结构{诠释 x[100];};主函数(){CStopwatch queueTestSw;typede ..
发布时间:2022-01-21 12:01:34 C/C++开发

更改优先级队列元素是否会导致重新使用队列?

我有一个priority_queue,我想修改它的一些内容(优先级值),那么队列会被重新使用吗? 这取决于它是使用 push/pop(更有可能,因为您只需要“插入",而不是使用整体),还是在访问 top 或 pop 时. 我真的很想更改队列中的一些元素.类似的东西: priority_queueq;诠释 a=2,b=3,c=5;int *ca=&a, *cb=&b, cc=&c;q. ..
发布时间:2022-01-21 11:54:50 C/C++开发

为 C++ STL 队列预分配空间

我正在使用队列编写基数排序算法,我希望在开始向队列添加内容之前让 STL 队列分配空间,这样我就可以避免不断的动态调整大小操作. 即使这不存在,我也想要一些具有...效果的东西 队列qs(N);for(int i=0;i 以这样一种方式,它不会在循环期间动态分配任何内存. 有问题的实际代码... void radix_sort(){//最大的数?整数最大值=-1;for(int ..
发布时间:2022-01-21 11:50:00 C/C++开发

为什么当我连接了调试器/IDE 时我的 STL 代码运行如此缓慢?

我正在使用 Visual Studio 2008 SP1 在 Windows Vista Business x64、四核机器、8gb 内存上运行以下代码. 如果我构建一个发布版本,并从命令行运行它,它会报告 31 毫秒.如果我从 IDE 启动它,使用 F5,它会报告 23353 毫秒. 以下是时间:(所有 Win32 版本) 调试,命令行:421ms 调试,来自 IDE:24, ..
发布时间:2022-01-20 21:06:03 C/C++开发

使用模板调试 C++ 代码,使用 gdb 调试 STL

这里的 gdb 用户如何看待它在使用模板和 STL 调试代码方面的功能? 您是否使用任何技巧使调试更简单?也许是一些 Python 脚本?或者你对gdb目前的方式满意吗(6.x版,7.x还没试过)? 谢谢. 解决方案 我假设您的意思是更好地可视化 STL 代码(而不是 调试模式 提供安全的迭代器和额外的运行时检查).我不确定你是否看过这些帖子: GNU GCC 文档:调试 ..
发布时间:2022-01-20 20:36:48 C/C++开发

如何使用 GDB 7.x 查看 STL 容器的内容

我一直在使用宏解决方案,如 此处这里.但是,提到了如何在没有宏的情况下查看它们.我指的是 GDB 版本 7 及更高版本. 有人能说明一下吗? 谢谢 解决方案 从SVN获取python查看器 svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python 将以下内容添加到您的 ~/.gdbinit python导入系统sys.path ..
发布时间:2022-01-20 20:34:06 C/C++开发

GDB C++ - 在查看核心转储时检查 STL 容器?

我正在 gdb 中调试我的程序的核心转储(事后分析).我打开它:gdb [程序名称] [核心名称] 但是,当我尝试检查 STL 向量时,例如打印 vec->size()或者打印 vec->at(0) 我得到了错误 “如果没有调试过程,您将无法做到这一点" 我只是想检查这些容器的内容和大小.有什么方法可以将虚拟进程附加到核心转储 gdb 检查,以便我可以做到这一点? 解 ..
发布时间:2022-01-20 20:29:07 C/C++开发