stl 相关问题

标准模板库(STL)是通用容器,迭代器,算法和函数对象的C ++库。当C ++被标准化时,STL的大部分被采用到标准库中,并且标准库中的这些部分有时也被错误地统称为“STL”。

为什么使用 std::ranges 算法而不是常规算法?

cppreference 状态: ranges 库是算法和迭代器库的扩展和概括,通过使它们可组合且不易出错,使它们更加强大。

回答 2 投票 0

C++ map::iterator vs map.find() 迭代器

基于范围的for循环中的迭代器和map的find()方法返回的迭代器有什么区别? 换句话说,我想知道的是: 要访问地图元素,我们为什么...

回答 2 投票 0

斐波那契堆的STL?

STL 中的斐波那契堆在哪里? 如果 STL 不实现 Fibonacci 堆,最佳实践是什么 使用 STL 中现有的算法和容器来实现它?

回答 4 投票 0

Windows 窗体应用程序旋转和显示 3D STL 对象

我想根据传入的参数在 Windows 窗体应用程序上旋转 3D STL 模型,并在应用程序内部直观地显示它。我可以使用 Unity 准备代码和模型,但我不知道...

回答 0 投票 0

std::string_view 的可变替代方案?

是否有 std::string_view 的可变替代方案? 我需要一个存储指针和大小的容器,例如用于将其传递给函数而不是传递指针和大小。我知道这很容易...

回答 0 投票 0

为什么 std::flat_set 和 std::flat_map 有一些 noexcept 函数而其他容器适配器没有?

我注意到 std::flat_set 和 std::flat_map 容器适配器提供了一些 noexcept 成员函数,特别是以下内容: [[nodiscard]] bool empty() const noexcept; size_typ...

回答 0 投票 0

GDB 和 C++:打印指向对象的指针向量

在我的代码中,我有一个 STL 向量,它包含指向对象的指针。 我之所以这样编码是因为我必须从不同的地方操作对象本身。 std::向量

回答 3 投票 0

c++ std::map operator [] [关闭]中的段错误

gdb 信息: #0 0x00007f53691c1a4a 在 ?? () 来自 /data/services/lib_glibc/lib/libc.so.6 #1 0x0000000000b59a3c in std::char_traits::compare (__n=, __s2= gdb 信息: #0 0x00007f53691c1a4a in ?? () from /data/services/lib_glibc/lib/libc.so.6 #1 0x0000000000b59a3c in std::char_traits<char>::compare (__n=<optimized out>, __s2=<optimized out>, __s1=<optimized out>) at /usr/include/c++/5/bits/char_traits.h:262 #2 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare (__str=..., this=0xc8ce080) at /usr/include/c++/5/bits/basic_string.h:2318 #3 std::operator< <char, std::char_traits<char>, std::allocator<char> > (__rhs=..., __lhs=...) at /usr/include/c++/5/bits/basic_string.h:4989 #4 std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::operator() (this=<optimized out>, __y=..., __x=...) at /usr/include/c++/5/bits/stl_function.h:387 #5 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_lower_bound (this=<optimized out>, __k=..., __y=0x7f5345b40310, __x=0xc8ce060) at /usr/include/c++/5/bits/stl_tree.h:1628 #6 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::lower_bound (__k=..., this=0x7f5345b40308) at /usr/include/c++/5/bits/stl_tree.h:1091 #7 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::lower_bound (__x=..., this=0x7f5345b40308) at /usr/include/c++/5/bits/stl_map.h:916 #8 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::operator[] (__k=..., this=0x7f5345b40308) at /usr/include/c++/5/bits/stl_map.h:479 ... (gdb) f 8 #8 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::operator[] (__k=..., this=0x7f5345b40308) at /usr/include/c++/5/bits/stl_map.h:479 479 iterator __i = lower_bound(__k); (gdb) i args __k = @0xb8f57a8: {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xb8f57b8 "bogi-signature"}, _M_string_length = 14, {_M_local_buf = "bogi-signature\000r", _M_allocated_capacity = 7451613697440967010}} this = 0x7f5345b40308 (gdb) f 7 #7 std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::lower_bound (__x=..., this=0x7f5345b40308) at /usr/include/c++/5/bits/stl_map.h:916 916 { return _M_t.lower_bound(__x); } (gdb) i args __x = @0xb8f57a8: {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xb8f57b8 "bogi-signature"}, _M_string_length = 14, {_M_local_buf = "bogi-signature\000r", _M_allocated_capacity = 7451613697440967010}} this = 0x7f5345b40308 (gdb) f 6 #6 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::lower_bound (__k=..., this=0x7f5345b40308) at /usr/include/c++/5/bits/stl_tree.h:1091 1091 { return _M_lower_bound(_M_begin(), _M_end(), __k); } (gdb) i args __k = @0xb8f57a8: {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xb8f57b8 "bogi-signature"}, _M_string_length = 14, {_M_local_buf = "bogi-signature\000r", _M_allocated_capacity = 7451613697440967010}} this = 0x7f5345b40308 (gdb) f 5 #5 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_lower_bound (this=<optimized out>, __k=..., __y=0x7f5345b40310, __x=0xc8ce060) at /usr/include/c++/5/bits/stl_tree.h:1628 1628 if (!_M_impl._M_key_compare(_S_key(__x), __k)) (gdb) i args this = <optimized out> __k = @0xb8f57a8: {static npos = 18446744073709551615, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xb8f57b8 "bogi-signature"}, _M_string_length = 14, {_M_local_buf = "bogi-signature\000r", _M_allocated_capacity = 7451613697440967010}} __y = 0x7f5345b40310 __x = 0xc8ce060 代码: for (; hIt != cntl->http_request().HeaderEnd(); hIt++) { this->_ctx._header[hIt->first] = hIt->second; } 这是构造函数的代码。 _ctx 是一个成员类,_header 是一个 std::map 成员变量。 hIt->first 和 hIt->second 返回有效的字符串变量。我通过打印 args 确认了这一点。 (用户的deviceid,敏感信息) 我检查了很多,但似乎没有什么是对的

回答 0 投票 0

C++ STL递归调用时的未定义行为[重复]

在复习 Leetcode 问题时,我想找到充满 0 的子数组。 我做了一个递归函数来完成任务,但它抛出了一个错误。 类解决方案{ 民众: ...

回答 1 投票 0

像“_M_construct”这样的函数在哪里定义

在Debian上反汇编了一个自己写的非常简单的C++程序。它涉及一些 std::string 操作。在反汇编代码中,我可以看到很多对以下内容的引用: 我在Debian上反汇编了一个自己写的非常简单的C++程序。它涉及一些std::string操作。在反汇编代码中,我可以看到很多对以下内容的引用: <void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)> 我相信这是由一些模板函数创建的具体字符串构造函数来初始化我的字符串。然而,反汇编代码似乎并没有提供关于模板函数的确切定义位置的线索。 我查了/usr/include/c++/10/string,我在这里找不到太多。 我也问过 ChatGPT,它说它是在libstdc++-10-dev 中定义的,我发布了apt-get source libstdc++-10-dev 以按照它的建议获取来源,但我只找到如下内容,这不是我真正想要的: 18 results - 4 files debian/libcc1-0.symbols: 8 (optional=abi_c++17)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_@Base 8 9: (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag@Base 8 10: (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag@Base 8 11 (optional=abi_c++11)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED1Ev@Base 10 debian/libstdc++6.symbols.32bit.cxx11: 116 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEj@GLIBCXX_3.4.21 5.2 117: (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEjc@GLIBCXX_3.4.21 5.2 118 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEj@GLIBCXX_3.4.21 5.2 119 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEjjjc@GLIBCXX_3.4.21 5.2 120: (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Ejc@GLIBCXX_3.4.21 5.2 121 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEj@GLIBCXX_3.4.21 5.2 170 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEj@GLIBCXX_3.4.21 5.2 171: (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEjw@GLIBCXX_3.4.21 5.2 172 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_set_lengthEj@GLIBCXX_3.4.21 5.2 173 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw@GLIBCXX_3.4.21 5.2 174: (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Ejw@GLIBCXX_3.4.21 5.2 175 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEj@GLIBCXX_3.4.21 5.2 debian/libstdc++6.symbols.64bit.cxx11: 116 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm@GLIBCXX_3.4.21 5.2 117: (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc@GLIBCXX_3.4.21 5.2 118 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm@GLIBCXX_3.4.21 5.2 119 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc@GLIBCXX_3.4.21 5.2 120: (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Emc@GLIBCXX_3.4.21 5.2 121 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm@GLIBCXX_3.4.21 5.2 170 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEm@GLIBCXX_3.4.21 5.2 171: (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEmw@GLIBCXX_3.4.21 5.2 172 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_set_lengthEm@GLIBCXX_3.4.21 5.2 173 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw@GLIBCXX_3.4.21 5.2 174: (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Emw@GLIBCXX_3.4.21 5.2 175 (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEm@GLIBCXX_3.4.21 5.2 所以问题是: 名字像:_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)的函数真的存在吗? 如果有,我在哪里可以找到它们? 如果不是,我怎么知道是哪个模板生成的? c++filt,它应该与您的 C++ 编译器一起安装,将 demangle 导出的 C++ 符号: c++filt _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag 给: void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >:: _M_construct<char*>(char*, char*, std::forward_iterator_tag) 这就是你要找的。

回答 1 投票 0

我可以在使用它们的指针/引用迭代它们时删除 `vector` 元素吗?

我有一个表示视频游戏中角色的统计修改的结构,以及一个“耗尽”此 buff 回合/阶段的函数: typedef struct CharacterBuff {

回答 0 投票 0

如何反转 C++ 向量?

C++ 中是否有内置向量函数来反转向量? 还是您只需要手动完成?

回答 6 投票 0

本身嵌套STL容器N次

有没有办法将STL容器作为模板参数重复n次嵌套在自身中? 例子: 模板 结构内斯特{ 向量<...> my_vec; }; 内部主要(){

回答 2 投票 0

如何使用继承正确实现自定义迭代器

为了练习和理解,我重新发明了 STL 向量。当然,我还必须实现迭代器系统。为了可重用性,我想实现所有具有继承的迭代器类别(对于

回答 1 投票 0

如何深度复制shared_ptr?

我有一个简单的Node树MultNode类。 它是 Node.js 的子类。 _pRight 和 _pLeft 是 std::shared_ptr 对象。类节点是一个抽象类。 DerFun 执行乘法的微分函数...

回答 2 投票 0

在排序过程中跟踪排列的奇偶性?

std::sort(及相关)是STL皇冠上的明珠之一。 然而,当我尝试在数值线性代数的上下文中使用它时,我发现它有一个明显的问题,这使我无法使用...

回答 0 投票 0

如果地图中已经存在一些键那么会发生什么

如果地图中已经存在某个键,那么会发生什么 如果某个键已经存在于地图中并且我们正在尝试使用相同的键插入不同的值那么会发生什么

回答 4 投票 0

std::execution::unseq 通过 for 循环提供什么?

我想看一个 for 循环的例子,它不能被自动向量化,但在使用并行 STL 重写时可以。

回答 1 投票 0

MSVC 的 unordered_map::lower_bound 是什么?

我发现,与我的预期和文档相反,MSVC 的 std::unordered_map 和 std::unordered_multimap(以及无序集)提供 lower_bound 和 upper_bound。 什么...

回答 1 投票 0

在构造函数中使用 protobuf 对象填充向量

是否有直接通过向量构造函数执行此操作的单行方法? std::vector vector_protos; vector_protos.emplace_back(); 像 vector_protos(1) 这样的东西。

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.