草庐IT

-std=gnu99

全部标签

c++ - 如何 typedef 具有未指定大小的 std::array?

我想写一些变量,比如std::arraya;哪里array_num是constint表示数组的长度。但是它很长,我想为它创建一个别名:typedefstd::arraymy_array;是吗?如何使用my_array喜欢my_array? 最佳答案 您需要的是aliastemplate:templateusingmy_array=std::array;您不能直接制作typedef模板,参见thispost.size_t是std::array采用的第二个模板参数的类型,而不是int。既然您了解了使用,您应该会使用它。它可以做typed

c++ - 使用 boost::random 作为 std::random_shuffle 的 RNG

我有一个程序使用来自boost::random的mt19937随机数生成器。我需要执行random_shuffle并希望为此生成的随机数来自此共享状态,以便它们可以确定梅森扭曲器先前生成的数字。我试过这样的:voidfoo(std::vector&vec,boost::mt19937&state){structbar{boost::mt19937&_state;unsignedoperator()(unsignedi){boost::uniform_intrng(0,i-1);returnrng(_state);}bar(boost::mt19937&state):_state(sta

c++ - std::iterator、指针和 VC++ 警告 C4996

int*arr=(int*)malloc(100*sizeof(int));int*arr_copy=(int*)malloc(100*sizeof(int));srand(123456789L);for(inti=0;i编译时我收到了std::copy()的警告:c:\programfiles(x86)\microsoftvisualstudio10.0\vc\include\xutility(2227):warningC4996:'std::_Copy_impl':Functioncallwithparametersthatmaybeunsafe-thiscallreliesont

c++ - 为什么我不能用 std::remove_if 从 std::set 中删除一个字符串?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:remove_ifequivalentforstd::map我有一组字符串:setstrings;//...我希望根据谓词删除字符串,例如:std::remove_if(strings.begin(),strings.end(),[](constwstring&s)->bool{returns==L"matching";});当我尝试这样做时,出现以下编译器错误:c:\ProgramFiles(x86)\MicrosoftVisualStudio10.0\VC\include\algorithm(1840):

c++ - 使用 std::move

在C++11之前,我使用swap-to-back来避免深度复制开销,例如:vector>Objects;for(/*somerange*/){vectorv;for(/*someotherrange*/){v.push_back(/*someobject*/);}Objects.push_back(vector());Objects.back().swap(v);}我如何使用std::move将v移动到Objects中而不是swap?我知道这里有很多变通方法,比如多数组或直接插入Objects.back(),但我需要一个std::move的用法示例明白了。

c++ - fstream::open() Unicode 或非 Ascii 字符在 Windows 上不起作用(使用 std::ios::out)

在一个C++项目中,我想打开一个文件(fstream::open())(这似乎是个大问题)。我的程序的Windows构建失败得很惨。文件“ä”(UTF-80xC30xA4)std::strings=...;//Convertsstd::fstreamf;f.open(s.c_str(),std::ios::binary|std::ios::in);//Works(f.is_open()==true)f.close();f.open(s.c_str(),std::ios::binary|std::ios::in|std::ios::out);//Doesn'twork字符串s是UTF-8

C++ 链表仅在 GNU/Linux 而不是 Windows 中导致段错误

下面是我正在进行的练习中的代码片段。它读取CSV并将其输入链表,然后打印到控制台。CSV看起来像这样:5,3,197,12,213,15,2522,0,7它在Linux和Windows中使用VisualStudio2010和G++进行编译。二进制文件在WindowsXP命令提示符下执行,但在GitBash(WindowsXP)和Linux下运行时会出现段错误。使用调试器(在Linux下),我将问题隔离到printList()无法识别链表的末尾。为什么会发生这种情况,我该怎么做才能防止这种情况发生?任何建议将不胜感激。#include#include#include#includeusi

使用std :: string作为return类型in BOOST.PYTHON导出功能

我有一个非常简单的示例,即通过boost.python导出到Python(2.7.13)的C++函数。下面的代码:#include#includeconstchar*greet(){return"hello,world!";}BOOST_PYTHON_MODULE(libhello){usingnamespaceboost::python;def("hello_world",greet);}我在OSX10.10.5机器上编译了g++-I~/boost-L~/boost/stage/lib\-L/System/Library/Frameworks/Python.framework/Version

c++ - 如何在 C++ 中将 std::string 值传递给 RegSetValueEx()

我正在编写一个程序来通过C++编辑Windows注册表项,但是当我尝试将字符串值传递给库函数RegSetValueEx()时,有一个以TEXT()开头的文件,它只能是硬编码值.我的部分代码:stringregion;stringexcelserver_type;stringkeyname=region+excelserver_type;if(RegSetValueEx(key64,TEXT("XXXXXXXXX"),0,REG_SZ,(LPBYTE)TEXT("XXXXXXXXXX"),100)!=ERROR_SUCCESS){RegCloseKey(key);cout当我尝试用键名替

c - GNU C 库是否可用于非 GNU(或 POSIX)平台?

只是想知道,GNUC库(glibc)是否可以在非GNU和/或非POSIX平台(例如MicrosoftWindows)上使用? 最佳答案 是的,这在理论上是可行的,但在实践中并不值得。您需要将系统调用接口(interface)、动态链接器和其他部分移植到Windows或您选择的平台,而Glibc不是理想的选择。如果你真的需要一个独立的C库,我会考虑newlib或uClibc(或FreeBSD/OpenBSD的libc)在glibc之上。Glibc是一个复杂的野兽,替代品要小得多,也更容易理解。