stl相关内容
我从 this link 在 C++ 中实现了一个编程问题,但我得到了一个我的代码在 pop() 操作中出现分段错误.我对 C++ 还很陌生,自己似乎找不到错误. #include#include使用命名空间标准;无效 printNge(int *arr);int main() {int arr[] = {1,4,2,6,3,8,7,2,6};printNge(arr);返回0;}无效 prin
..
我有一个名为 vertex 的结构,并创建了一些指向它们的指针.我想要做的是将这些指针添加到列表中.我下面的代码在尝试将指针插入列表时会产生分段错误.有人可以解释发生了什么吗? #include #include #define NUM_VERTICES 8使用命名空间标准;枚举{白色,灰色,黑色};结构顶点{诠释颜色;整数距离;字符父;};主函数(){//创建顶点顶
..
向量五;v.push_back(1);int * p = &v[0];for (int i = 2; i 我知道向量重新分配了一块新的内存来增加容量,但是 p 只是一个指向某个内存地址的指针,而 p 本身并没有改变.即使在向量重新分配之后, p 指向的内存也在同一进程的地址空间中.为什么会崩溃? 解决方案 如果您将代码更改为以下内容: #include #incl
..
我在我的 MFC 应用程序中使用 std::string,我想将它存储在 doc 的 Serialize() 函数中.我不想将它们存储为 CString,因为它会在其中写入自己的内容,而我的目标是创建一个我知道其格式并且可以被其他应用程序读取而无需 CString 的文件.所以我想将我的 std::strings 存储为 4 字节(int)字符串长度,后跟包含该字符串的大小的缓冲区. void
..
我有一个相当大的基于 MFC 的程序.我的任务是让它在 Linux 上运行.我已经解释过,这将需要将程序重写为带有 STL 的直接 C++(更多工作)或 Qt/C++(更少工作).现在有人告诉我,我需要编写包装器以使每个 MFC 类在 Linux 中工作,并使用预处理器指令仅编译 Linux 或 Windows 中需要的内容.我解释说我们的通信断开了,我认为这比从头开始重写整个项目(我不必这样做来
..
您会将 MFC 与 STL 混合使用吗?为什么? 解决方案 当然.为什么不呢? 我使用 MFC 作为表示层,尽管后端中的结构和类使用 STL.
..
假设我有一个带有字符串“Bob Evans"的 CString 变量.我想从位置 4 复制到原始 CString 的末尾到一个新的 CString,但是我找不到为此的语义示例: CString original("Bob Evans");//下面是我想要做的//CString newStr = original.copy(4, original.GetLength()); 我也考虑过将变量 o
..
以前,我使用过CArray 和CMap 等MFC 集合类.一段时间后,我切换到 STL 容器并使用了一段时间.虽然我发现 STL 好多了,但我无法指出它的确切原因.一些推理如: 它需要 MFC:不成立,因为我的程序的其他部分使用了 MFC 它取决于平台:不成立,因为我只在 Windows 上运行我的应用程序.(不需要可移植性) 在 C++ 标准中定义:好的,但 MFC 容器仍然可以工作
..
当 min 已经被定义为宏时,如何调用 std::min? 解决方案 (std::min)(x,y) min 周围的括号防止宏扩展.这适用于所有函数宏.
..
我需要一个好的 C++ Unicode 库.我需要: 以 Unicode 敏感的方式进行转换.例如,以不区分大小写的方式对所有字符串进行排序,并获取它们的第一个字符作为索引.将各种 Unicode 字符串转换为大写和小写.在合理的位置拆分文本 - 也适用于中文和日文的单词. 以区域设置敏感的方式格式化数字、日期(应该是线程安全的). 对 UTF-8(主要内部表示)的透明支持. 据我
..
当我尝试在我的 Android NDK 项目(使用最新的 NDK r5b)中包含任何 C++ 类(如 vector)时,我收到如下错误... 编译++ thumb : test-libstl
..
如果我交换两个向量,它们的迭代器会保持有效,现在只是指向“其他"容器,还是迭代器会失效? 也就是说,给定: 使用命名空间标准;向量x(42, 42);向量是;向量::迭代器 a = x.begin();向量::迭代器 b = x.end();x.swap(y);//a 和 b 仍然有效吗?指向 x 还是 y? std 似乎对此只字未提: [n
..
我使用 C# 已经有一段时间了,回到 C++ 是一件很头疼的事情.我正在尝试将我的一些实践从 C# 带到 C++,但我发现了一些阻力,我很乐意接受你的帮助. 我想为这样的类公开一个迭代器: 模板我的容器类{上市://这里是问题://MyIterator 的 typedef 没有公开暴露 std::vector?MyIterator Begin() { return mHi
..
我正在尝试学习 STL 库,但遇到了一个奇怪的问题.这段代码编译完美: void Show(vectormyvec){向量::iterator it;cout 虽然这个在编译时给了我一条错误消息: 模板void Show2(向量myvec){向量::iterator it;cout 错误是: $ g++ hello.cpphello.cpp:
..
我有一个由 std::find() 产生的 stl 迭代器,并希望测试它是否是最后一个元素.一种写法如下: 我的 *match = someValue;矢量我的(一些内容);向量::iterator itr = std::find(Mine.begin(), Mine.end(), match);if (itr == --Mine.end()) {做一点事;} 但在
..
范围是指一对迭代器.在伪 C++ 中: std::vectorv1 = { 1, 2, 3, 4, 5 };std::vectorv2 = { 2, 3, 4 };if( std::compare_range( v1.begin() + 1, v1.end() - 1, v2.begin(), v2.end() ) {std::cout
..
我有一个 X 类,我在这里提供了一个片段: class X {上市:模板X(Iter begin, Iter end) : mVec(begin, end) {}私人的:向量 Y常量 mVec;}; 我现在想为这个类添加一个新的连接构造函数,比如: 模板X(Iter1 begin1, Iter1 end1, Iter2 begin2,
..
灵感来自 这个问题,询问如何将向量附加到自身,我的第一个想法是以下(是的,我意识到 insert 现在是一个更好的选择): #include #include #include #include int main() {std::vector向量 {1, 2, 3};std::copy (std::begin (vec), std::end
..
如何在 C++ 中从 iterator(该容器类的)获取一个 const_iterator(某个容器类的)?insert_iterator 中的 const_iterator 怎么样?生成的 iterator 应该指向与原始位置相同的位置. 解决方案 容器需要提供 iterator 作为可转换为 const_iterator 的类型,所以可以隐式转换: Container::iterat
..
我有: void add_all_msgs(std::deque::iterator &iter); 如何使该函数“通用",以便它可以采用任何类型的输入迭代器?我真的不在乎它是否在迭代双端队列、向量或其他东西,只要迭代器正在迭代消息.- 这在 C++ 中是不是很简单? 解决方案 templatevoid add_all_msgs(InputIterator iter); 用法: s
..