问题标签 [std]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::thread 错误(线程不是 std 的成员)
我使用 macports 编译并安装了 gcc4.4。
当我尝试使用 -> g++ -g -Wall -ansi -pthread -std=c++0x main.cpp ...进行编译时:
编译器返回:
但是std::cout <<...
编译很好..
谁能帮我?
c++ - 具有 1 个参数的成员函数上的 std::for_each
我想知道如何实现标题中所述的内容。我尝试过类似...
std::for_each( a.begin(), a.end(), std::mem_fun_ref( &myClass::someFunc ) )
但我得到一个错误,说“术语”(我假设它意味着第三个参数)不会评估为具有 1 个参数的函数,即使someFunc
确实采用一个参数 - 存储在a
.
我想知道我正在尝试做的事情是否可以使用标准库(我知道我可以使用 boost 轻松完成)。
PS与仅手动迭代并将对象传递给相比,使用for_each
并具有任何性能影响吗?mem_fun_ref
a
someFunc
c++ - 如何在 C++0x 中组合哈希值?
C++0x 添加hash<...>(...)
.
我找不到hash_combine
函数,如boost中所述。实现这样的事情的最干净的方法是什么?也许,使用 C++0x xor_combine
?
c++ - 如何检查std字符串中的位置是否存在?(c++)
我有一个长字符串变量,我想在其中搜索特定单词并根据这些单词限制文本。
假设我有以下文字:
“这个令人惊叹的新型可穿戴音频解决方案的特点是在衬衫前部嵌入了一个工作扬声器,可以播放适合任何情况的音乐或音效。就像在自己的电影中主演一样”
和单词:“解决方案”,“电影”。
我想从大字符串中减去(如结果页面中的 google):
“......新的可穿戴音频解决方案具有嵌入的工作扬声器......”和“......就像在自己的电影中主演一样”
为此,我正在使用代码:
但是 desc.at(loc1-i) 导致 OutOfRange 异常...我不知道如何检查该位置是否存在而不会导致异常!
请帮忙!
c++ - gcc 的 STL 现在支持右值引用吗?
我知道 Visual Studio 2010 的标准库已被重写以支持右值引用,这大大提高了它的性能。
gcc 4.4(及更高版本)的标准库实现是否支持右值引用?
c++ - 运算符 << 重载
我试图重载 << 运算符。我也在尝试练习良好的编码。但是除非我取消注释 using namespace std,否则我的代码不会编译。我不断收到这个错误,我不知道。我正在使用 g++ 编译器。
有人可以告诉我在不使用命名空间 std 的情况下重载 << 运算符的正确方法吗?
c++ - 为什么 ifstream 不读到最后?
我正在制作一个类似记事本的程序。为了从文件中获取文本,我通过执行将每个字符读入缓冲区
但是,如果我加载一个 exe,它会在 MZ 之后停止,但记事本会读取整个 exe。我将 ifstream 设置为二进制模式,但仍然没有运气。我究竟做错了什么?谢谢
代码:(混乱)
c++ - 在常量表达式中使用 numeric_limits::max()
我想在一个类中定义一个常量,它的值是最大可能的 int。像这样的东西:
此声明无法编译并显示以下消息:
numeric.cpp:8:错误:'std::numeric_limits::max()' 不能出现在常量表达式中 numeric.cpp:8:错误:函数调用不能出现在常量表达式中
我明白为什么这不起作用,但有两件事对我来说很奇怪:
在我看来,在常量表达式中使用值是一个自然的决定。为什么语言设计者决定让max()成为一个函数,从而不允许这种用法?
该规范在 18.2.1 中声称
对于在 numeric_limits 模板中声明为 static const 的所有成员,特化应以可用作整数常量表达式的方式定义这些值。
这是否意味着我应该能够在我的场景中使用它并且它不与错误消息相矛盾?
谢谢你。
c++ - std 函数 std::_Rb_tree_rebalance_for_erase () 中的分段错误
(任何未来的读者请注意:毫无疑问,错误在我的代码中,而不是 std::_Rb_tree_rebalance_for_erase () )
我对编程有点陌生,不确定如何处理似乎来自 std 函数的分段错误。我希望我在做一些愚蠢的事情(即滥用容器),因为我不知道如何修复它。
准确的错误是
程序收到信号 EXC_BAD_ACCESS,无法访问内存。
原因是:在KERN_INVALID_ADDRESS地址:0x000000000000000c
中的std :: _ Rb_tree_rebalance_for_erase()0x00007fff8062b144
(GDB)回溯
在STD#0 0x00007fff8062b144 :: _ Rb_tree_rebalance_for_erase()
1263:在stl_tree.h#1 0x000000010000e593在仿真:: runEpidSim(此= 0x7fff5fbfcb20)
#2 0x0000000100016078 in main () at main.cpp:43
在分段错误更新两个容器的内容之前成功退出的函数。一个是被boost::unordered_multimap
调用的carriage
;它包含一个或多个struct Infection
对象。另一个容器的类型std::multiset< Event, std::less< Event > > EventPQ
为ce
.
最后cout <<
一行出现在 seg 故障之前。
到目前为止,我的想法是ce
在此功能之后立即尝试重新平衡,但我不确定为什么重新平衡会失败。
更新
当我删除ce.erase( epqItr );
. 我能够在代码的另一个位置成功删除事件;我在那里用来擦除项目的代码ce
与这里的代码相同。
没有优化的回溯(感谢,bdk)揭示了更多信息:
程序收到信号 EXC_BAD_ACCESS,无法访问内存。
原因是:在KERN_INVALID_ADDRESS地址:0x000000000000000c
在STD 0x00007fff8062b144 :: _ Rb_tree_rebalance_for_erase()
(GDB)回溯
在STD#0 0x00007fff8062b144 :: _ Rb_tree_rebalance_for_erase()在STD
#1 0x00000001000053d2 :: _ Rb_tree,性病::以下,>的std ::分配器>: :erase (this=0x7fff5fbfdfe8, __position={_M_node = 0x10107cb50}) at > stl_tree.h:1263
#2 0x0000000100005417 in std::multiset, std::allocator >::erase (this=0x7fff5fbfdfe8, __position={_M_node = 0xb) }) at stl_multiset.h:346 #3 0x000000010000ba71 in Simulation::runEpidSim (this=0x7fff5fbfcb40) at Simulation.cpp:426
#4 0x000000010001fb31 in main () at main.cpp:43
除非 Xcode 读取行号错误,否则我硬盘中唯一的 stl_tree.h 在第 1263 行是空白的。
一些人要求查看调用recover的函数。这有点复杂:
最后cout
打印。该代码以前在没有此特定版本的恢复功能的情况下工作。
Noah Roberts 正确地指出问题出在 Simulation.cpp 的第 426 行。跳转到下面的尴尬解决方案。