草庐IT

STL-string

全部标签

c++ - STL Map 或 HashMaps 线程安全吗?

我可以在多线程程序中使用map或hashmap而不需要锁吗?即它们是线程安全的吗?我想同时从map中添加和删除。那里似乎有很多相互矛盾的信息。对了,我在Ubuntu10.04下使用的是GCC自带的STL库编辑:就像互联网上的其他人一样,我似乎得到了相互矛盾的答案? 最佳答案 您可以安全地同时执行读取操作,即调用const成员函数。但是,如果其中一个涉及写入,则您不能同时执行任何操作,即非常量成员函数的调用对于容器来说应该是唯一的,并且不能与任何其他调用混合。即您不能从多个线程更改容器。所以你需要使用lock/rw-lock确保访问安

c++ - STL排序题

我有结构vector:vectormyvec;自定义是一种结构:structCustom{doublekey[3];};如何按key[0]对myvec进行排序。使用STL排序算法的key[1]或key[2]? 最佳答案 编写自定义比较器:templatestructCustomComp{booloperator()(constCustom&lhs,constCustom&rhs)const{returnlhs.key[i]然后排序,例如通过使用std::sort(myvec.begin(),myvec.end(),CustomCom

没有 <string> 和 STL 的 C++ 字符串

我过去用C++的次数不多,最近一直在用C#,我真的很难再次回到C++的基础知识中。这是特别棘手的,因为工作要求不能使用最方便的C++结构,因此所有字符串都必须是char*,并且没有提供STL列表。我目前正在尝试做的是创建一个字符串列表,使用STL或在C#中我根本不会花时间。基本上我想要一个功能,例如:char**registeredNames=newchar*[numberOfNames];然后,RegisterName(const*charconstname,constintlength){//looptoseeifnamealreadyregisteredsnippedif(not

c++ - std::string 等效于具有空字符的数据?

我想读取二进制文件并使用类似std::string的东西来自动调整缓冲区大小等。我正在使用VisualC++。我有哪些选择? 最佳答案 std::string类已经可以处理嵌入了NUL字符的数据。你遇到了什么问题?请注意,在使用.c_str()方法时,任何嵌入的NUL字符都将终止返回的C风格字符串。 关于c++-std::string等效于具有空字符的数据?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

c++ - 仅对 STL 容器使用 C++ 是一种不好的做法吗?

首先介绍一下背景......在下文中,我使用C、C++和Java编写(通用)算法,而不是带有界面的gui和花哨的程序,而是简单的命令行算法和库。我开始学习Java编程。我对Java非常满意,并且我学会了如何使用Java容器,因为它们往往会降低簿记的复杂性,同时保证出色的性能。我断断续续地用过C++,但我用它肯定不如用Java,而且感觉很麻烦。我对C++的了解还不足以在不查找每个函数的情况下使用它,所以我很快又回到了尽可能多地坚持使用Java。然后我突然转向汇编语言的破解和黑客攻击,因为我觉得我过于关注一种太高级的语言,我需要更多关于CPU如何与内存交互以及真正发生的事情的经验与1和0。

c++ - 有什么用STL写的很酷的项目吗?

我想学STL通过快速浏览真实项目源。在哪里可以找到使用STL的高质量项目? 最佳答案 Notepad++:仅限纯Win32+STL!BasedonapowerfuleditingcomponentScintilla,Notepad++iswritteninC++andusespureWin32APIandSTLwhichensuresahigherexecutionspeedandsmallerprogramsize.Byoptimizingasmanyroutinesaspossiblewithoutlosinguserfrien

c++ - 将项目推送到 STL 容器后出现段错误

typedefstructtemp{inta,b;char*c;temp(){c=(char*)malloc(10);};~temp(){free(c);};}temp;intmain(){tempa;listl1;l1.push_back(a);l1.clear();return0;}给出段错误。 最佳答案 你没有复制构造函数。当您将“a”插入列表时,它会被复制。因为你没有复制构造函数(为c分配内存并从旧c复制到新c)c是a中的相同指针和列表中a的拷贝。两个a的析构函数都被调用,第一个会成功,第二个会失败,因为c指向的内存已经被释

C++,删除类头中的#include<vector> 或#include<string>

如果可能的话,我想从我的类头文件中删除和的包含。string和vector都是在头文件中声明的函数的返回类型。我希望我能做这样的事情:namespacestd{templateclassvector;}然后,在header中声明vector并将其包含在源文件中。是否有涵盖必须包含在header中的情况以及可以将包含内容拉入源文件的情况的引用? 最佳答案 你不能安全地转发声明STL模板,至少如果你想以可移植和安全的方式进行。该标准清楚地说明了每个STL元素的最低要求,但为可能添加额外模板参数的实现扩展留出了空间,只要它们具有默认值。也

c++ - Cygwin: g++ 5.2: ‘to_string’ 不是 ‘std’ 的成员

这个问题在这里已经有了答案:to_stringisnotamemberofstd,saysg++(mingw)(13个答案)关闭7年前。下面这个简单的程序不能用gcc在cygwin中编译#include#includeintmain(){std::cout命令行:$g++-std=c++0xto_string.cc错误:to_string.cc:Infunction‘intmain()’:to_string.cc:6:16:error:‘to_string’isnotamemberof‘std’std::coutG++版本:$g++--versiong++(GCC)5.2.0Copyr

C++ Data-Url as String to const byte *

我有一个Data-Url文件的std:string。必须对base64编码数据进行解码,然后将其传递给此函数:open(constbyte*data,longsize)所以首先我提取编码数据size_tpos=dataurl.find_first_of(',');std::stringencoded=dataurl.substr(spos+1);然后我用这个base64decoderstd::stringdecoded=base64_decode(encoded);那么,我如何将字符串类型的“解码”转换为字节*?以下代码产生错误open((byte*)decoded.c_str(),d