Articles of stl

unique_ptr编译错误

如果我告诉你我不能把它编译出来,我觉得这很尴尬。 你能帮我吗? #include<memory> using namespace std; int main() { std::unique_ptr<int> p1(new int(5)); return 0; } $ gcc main.cpp main.cpp: In function 'int main()': main.cpp:6:2: error: 'unique_ptr' was not declared in this scope main.cpp:6:13: error: expected primary-expression before 'int' main.cpp:6:13: error: expected ';' before 'int' $ gcc –version gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1

eclipse中的unique_ptr自动完成

我在玩unique_ptr。 在我的最后一篇文章中,人们帮助我在编译期间通过指定-std = c ++ 0x来编译使用这个指针的程序。 现在我想知道是否有任何方法来指示日食考虑c + + 11自动完成? unique_ptr不在std :: namespace列表中,也不能find与unique_ptr关联的方法(reset,move …)。 谢谢你vahid

std :: normal_distribution <double>导致错误的命令窗口与Linux?

任何人来访问这个问题? 每1实现不需要产生相同的数据。 在实践中呢 – arm,x86,free和commercial编译器在STL实现方面有很多不同吗? // g++ –std=c++11 -oa minimal.cpp && ./a #include <iostream> #include <random> using namespace std; int main() { std::mt19937_64 gen; gen.seed(17); cout << "\nNormal\n"; normal_distribution<double> distr1; for (int i = 0; i < 2; i++) { double delay = distr1(gen); printf(" Value = %15.15g\n", delay); } return(0); } /* Results (1) […]

用C ++为OSX创build共享库

我刚刚开始用C ++编程,而且我意识到我一直不得不一遍又一遍地编写相同的代码(主要是实用程序函数)。 所以,我试图创build一个共享库并将其安装在PATH中,以便我可以在需要时使用这些效用函数。 以下是我迄今为止所做的: 用以下内容创build一个文件utils.h : – #include<iostream> #include<string> std::string to_binary(int x); 使用以下内容创build一个文件utils.cpp : – #include "utils.h" std::string to_binary(int x) { std::string binary = ""; while ( x > 0 ) { if ( x & 1 ) binary += "1"; else binary += "0"; x >>= 1; } return binary; } 按照这里提到的步骤: – http://www.techytalk.info/c-cplusplus-library-programming-on-linux-part-two-dynamic-libraries/ […]

在C ++中处理UTF-8

要了解C ++是否是我的项目的正确语言,我想testingUTF-8的function。 根据参考资料,我build立了这个例子: #include <string> #include <iostream> using namespace std; int main() { wstring str; while(getline(wcin, str)) { wcout << str << endl; if(str.empty()) break; } return 0; } 但是当我input一个UTF-8字符时,它会出错: $ > ./utf8 Hello Hello für f $ > 不仅不打印ü ,而且还会立即退出。 gdb告诉我没有崩溃,但是一个正常的退出,但我觉得很难相信。

使用检查的STL实现,任何可用的免费?

你用过一个检查过的STL实现吗? 有没有发现你不期待的错误? 有没有我可以在Linux上免费试用?

在VS,UNIX / Linux中删除之后,STL迭代器会发生什么?

请考虑以下情况: map(T,S*) & GetMap(); //Forward decleration map(T, S*) T2pS = GetMap(); for(map(T, S*)::iterator it = T2pS.begin(); it != T2pS.end(); ++it) { if(it->second != NULL) { delete it->second; it->second = NULL; } T2pS.erase(it); //In VS2005, after the erase, we will crash on the ++it of the for loop. //In UNIX, Linux, this doesn't crash. }//for 在我看来,在VS2005中,在“擦除”之后,迭代器将等于end(),因此在尝试增加它时会崩溃。 […]

如何在STL中使用libclang?

我试图用libclang来parsing一个库,而且我遇到了一个非常简单的问题:如何使用STL来configuration它? 目前,它无法parsing翻译单元,因为它找不到。 这是我的尝试: char *args[] = {"-x", "c++", "-Ic:/my/library/includes", "-IG:/Prog/libcxx-3.4/include"}; clang_parseTranslationUnit(index, "c:/my/library/test.cpp", args, 4, 0, 0, 0); 我在Windows上,从llvm.org下载了预编译的clang二进制文件,并尝试了各种STL实现: 视觉工作室 MingW平台 libCXX 在每一种情况下,我都以未知的types结束了。 例如,与mingw,我有以下错误信息: /mingw/include\wchar.h:221:71:error:unknown type name'_locale_t'/mingw/include\wchar.h:223:81:error:unknown type name'_locale_t'/mingw/include\stdlib.h :173:65:error:unknown type name'_locale_t'/mingw/include\stdlib.h:175:75:error:unknown type name'_locale_t'/mingw/include\io.h:301:14:error:unknown键入名称'off64_t'/mingw/include\io.h:301:36:错误:C ++需要所有声明的types说明符/mingw/include\io.h:302:14:错误:未知types名称'off64_t'/ mingw / include \ io.h:302:39:error:unknown type name'off64_t'/mingw/include\unistd.h:65:20:error:unknown type name'off_t' 我find关于这个主题的罕见的教程不谈论这个主题…

在Windows上,std :: basic_string <TCHAR>会比std :: wstring更可取吗?

据我了解,Windows#定义TCHAR作为基于生成的应用程序正确的字符types – 所以它是在UNICODE生成和char否则为wchar_t 。 因此,我想知道是否std::basic_string<TCHAR>比std::wstring更可取,因为第一个理论上应该匹配应用程序的字符types,而第二个将总是很宽。 所以我的问题基本上是:在Windows上std::basic_string<TCHAR>是可取的std::wstring ? 而且,是否会有任何警告(即意外的行为或副作用)使用std::basic_string<TCHAR> ? 或者,我应该只是在Windows上使用std::wstring并忘记它?

LNK2022和LNK2034链接器与CRT版本10.0的错误

抱歉打扰有这个问题的任何人,但我一直在研究这个小时,还没有决议呢: 我正在向Visual Studio 2010中的10.0 CRT(编译器)移植一个相当庞大的应用程序。该应用程序是托pipe使用/ clr的C ++ / CLI。 大部分代码是本机的(95%),其中有一些托pipe部分。 所以我的工作是让.vcxproj中的开关指向新的10.0 CRT(即编译器)。 我们以前使用v90,或者使用VS 2008 SP1附带的VC编译器。 好的,如此突破变化? 看起来像一堆实际上。 我修复了一些处理集合的迭代器问题,这一切都非常简单。 但是,这些链接器错误正在杀死我。 任何帮助,将不胜感激: 1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c0001c0). 1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2022: metadata operation failed (80131195) : Custom attributes are not consistent: (0x0c0001c5). … 1>MSVCMRTD.lib(locale0_implib.obj) : error LNK2034: […]