STL是否有可用的Hash功能,这些功能是否公开?
我知道有一些使用哈希值的非标准实现(例如boost :: hash_map),而MSVC8实现了hash_map/hash_set/etc的版本.
但是有没有在C++ 98 STL中定义的Hash函数?
如果没有,那么可靠散列函数的最佳非C++ 98源代码是什么?
首选源的顺序(从最可接受到最少):Boost,C++ 0x标准STL,TR1,其他第三方.
在SWIG中,"%include"指令与标准C"#include"之间有什么区别?
例如,在所有教程中,为什么它们通常看起来像这样:
%module my_module
%{
#include "MyHeader.h"
%}
%include "MyHeader.h"
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎是多余的.也许有知识的人可以澄清.
是否有一个包含C++代码的首选方法?
我试图弄清楚如何使用GCC为#include语句构建变量字符串.
我的想法是,对于我编写的每个源模块,我希望包含一个动态生成的C源头,它是在构建过程的早期创建的.
生成此文件不是问题.不幸的是,包括它在内.
到目前为止我所拥有的是(identities.h):
// identities.h
# define PASTER2(str) #str
# define PASTER(str) PASTER2(str ## .iden)
# define EVALUATOR(x) PASTER(x)
# define IDENTITIES_FILE EVALUATOR(__FILE__)
# include IDENTITIES_FILE
Run Code Online (Sandbox Code Playgroud)
理想情况下,这将被使用(main.c):
//main.c
# include "identities.h"
int main() {return 0;}
Run Code Online (Sandbox Code Playgroud)
在编译之前,预处理器将在一次传递中扩展为:
//main.c (preprocessed)
# include "main.c.iden"
int main() {return 0;}
Run Code Online (Sandbox Code Playgroud)
我正在使用的两个间接级别(PASTER和EVALUATOR)是这篇文章的结果.
不幸的是,这不起作用,我留下了错误:
obj/win32/dbg/main.o
In file included from main.c:1:0:
identities.h:42:1: error: #include expects "FILENAME" or <FILENAME>
Run Code Online (Sandbox Code Playgroud)
我认为问题是include语句缺少引号..任何想法?
我正在使用MinGW(GCC 4.5.0)编译我的库以作为共享库导出.我这样做是通过使用MAKE命令编译所有源文件,类似于:
gcc -shared -c mysource.cpp -o mysource.o
Run Code Online (Sandbox Code Playgroud)
最后:
gcc -shared -lstdc++ -lm -lws2_32 mysource.o -o mylib.dll
Run Code Online (Sandbox Code Playgroud)
当我对输出文件进行依赖性遍历时(例如使用http://www.dependencywalker.com/),我看到有3个依赖项:
KERNEL32.dll
MSVCRT.dll
LIBSTDC++-6.DLL
Run Code Online (Sandbox Code Playgroud)
让我的DLL依赖于不附带windows的文件对于我的最终目标来说是次优的.
有没有办法我可以设置我的系统,以便最终输出(DLL)只依赖于KERNEL32和MSVCRT?
所以我有一个MVC项目.此MVC项目包含一个Controller,需要将内容流回客户端.当流媒体开始时,无法确定内容长度(它是在运行中计算的).所以我打开HttpContext.Current.Response.OutputStream,并开始定期写入和刷新(我已经禁用了缓冲输出,并附加了相应的http头):
while (some condition){
HttpContext.Current.Response.OutputStream.Write(buffer, 0, buffer.Length);
HttpContext.Current.Response.Flush();
}
Run Code Online (Sandbox Code Playgroud)
如果我然后强制关闭流:
HttpContext.Current.Response.Close();
Run Code Online (Sandbox Code Playgroud)
它没有正确地结束Chunked内容(它不会在末尾追加0长度的块,以向客户端指示EOF).
如果我更优雅地关闭输出流:
HttpContext.Current.Response.End();
Run Code Online (Sandbox Code Playgroud)
要么
HttpContext.Current.ApplicationInstance.CompleteRequest();
Run Code Online (Sandbox Code Playgroud)
它正确地关闭了流(附加到结尾的零长度块),但是我得到了应用程序抛出的异常,表明它无法将HTTP头插入输出流,因为流已经被写入了!
在这两种情况下,Controller都会继续返回null(或EmptyActionResult).
我假设异常是由于MVC堆栈要求每个ActionResult在Controller完成执行后设置HTTP头而引起的.如果是这种情况,如何在MVC中实现Chunked流?
提前致谢!
编辑:抛出的确切异常是:
Uncaught Exception: System.Web.HttpException (0x80004005): Server cannot set status after HTTP headers have been sent.
at System.Web.Http.WebHost.HttpControllerHandler.EndProcessRequest(IAsyncResult result)
at System.Web.Http.WebHost.HttpControllerHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud) 我希望有关C++模板的一些指导.我一直在使用该boost::asio库进行TCP通信.到目前为止,我一直在使用内置在boost :: asio库中的存储容器.例如:
boost::array<char, 128> buf;
boost::system::error_code error;
size_t len = socket.read_some(boost::asio::buffer(buf), error);
Run Code Online (Sandbox Code Playgroud)
要从套接字读取,我只需boost::asio::buffer在我的boost::array对象周围包装一个类型的缓冲区.这很好,但现在我想反向工作.也就是说,我想回写插槽,从我已经拥有的一些自定义存储类中提取数据.我的问题是,如何理解boost :: asio :: buffer可以包装的模板类型要求,或者更一般地说,指定的参数类型:
template<typename ConstBufferSequence>
std::size_t send(
const ConstBufferSequence & buffers
);
Run Code Online (Sandbox Code Playgroud)
该API列出的要求ConstBufferSequence,但我不能让这种正面或反面.有人可以帮我理解吗?我想要传递给"发送"函数的类型需要公开哪些方法?
我正在使用Cygwin编译一个项目(GCC v4.5.0),我遇到了奇怪的链接器问题.我希望有一些专业知识的人可以提供帮助.
错误:未定义引用
std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)
但是,当我使用gcc编译器标志进行编译时,链接才会失败:
-std=c++0x
当我没有指定标准时,它会成功.
一些说明:
-lstdc++boost::units::detail::utility.hpp, function: std::string demangle(const char* name);问题:
std::basic_string可以保证它可以找到libstdc++.a?在此先感谢大家.
-jt
我使用gcc 4.5.0和msvc8/9在C++中工作.
我希望能够压缩文件(10 Gb),然后使用我的应用程序打开此文件.
但是,文件内容是这样的,每当我使用它们时,我不一定需要它们内部的所有内容.
因此,例如,有一次我打开其中一个压缩文件,并决定我想在不加载文件的情况下寻找文件的95%.使用像gzip这样的压缩算法,这是不可能的:我必须解压缩文件的前95%,然后才能解压缩最后的5%.
So, are they any libraries similar to gzip, that are open source
and available for commercial use, that have built in check points,
to re-sync the decompression stream?
Run Code Online (Sandbox Code Playgroud)
我认为也许一个失败的音频编解码器可能会成功.我知道其中一些算法有检查点,因此您可以通过音乐文件进行搜索,而不必等待音乐文件的全部内容被解压缩.使用音频编解码器进行数据解压缩是否存在缺陷?
谢谢!
在我工作的公司,最近有一项规定,所有“高度可见”的布尔逻辑都必须以析取范式表示。
例如(尽管这个概念与语言无关),
#if (defined(A) || defined( B )) || (defined(C) && defined(D))
Run Code Online (Sandbox Code Playgroud)
必须替换为:
#if defined(A) || (defined(C) && defined(D)) || defined(B)
Run Code Online (Sandbox Code Playgroud)
强制要求代码必须以这种方式表达的动机是什么?有什么优点?
KendoUI添加的扩展方法(ToDataSourceResult)似乎在Pages> Page#1上失败.它在第一次加载页面时工作正常,但是当我尝试使用它进行虚拟滚动时,为了获取页面,2,3,4 ... N异步,该方法忽略了我正在尝试的IEnumerable对象中的所有数据改造.
我的代码如下:
我有一个MVC控制器,可以像这样获取数据:
Database database = Database.GenerateDatabase();
ResultSet queryResults = database.GetEvents(
FilterHelper.GenerateQueryCriteria((List<IFilterDescriptor>) request.Filters, request.Page, request.PageSize)
);
Run Code Online (Sandbox Code Playgroud)
Database.GetEvents返回一个对象,如下所示:
public class ResultSet {
public List<ResultSetRow> Set;
public int PageRowCount;
public int TotalRecordCount;
}
Run Code Online (Sandbox Code Playgroud)
每个ResultSetRow,是一个具有1个字符串,2个int作为属性的类的实例.
此时,我设置了一个断点并检查ResultSet.Set的内容.数据库使用request.PageSize指定的记录正确填充List.我已确认正在为任何和所有页码返回结果.
下一阶段,一切都很糟糕:
DataSourceResult result = ((IEnumerable<ResultSetRow>) queryResults.Set).ToDataSourceResult(request);
Run Code Online (Sandbox Code Playgroud)
我检查DataSourceResult对象的内容,其数组属性'Data'为空.
为什么我的模型(ResultSetRow)无法转换为Kendo的DataSourceResult对象?
一些额外的信息:
感谢您的帮助SO社区
c++ ×6
algorithm ×2
asp.net-mvc ×2
boost ×2
c ×2
asp.net ×1
boost-asio ×1
build ×1
c++11 ×1
compression ×1
cryptography ×1
cygwin ×1
gcc ×1
gzip ×1
http-headers ×1
include ×1
kendo-ui ×1
linker ×1
logic ×1
macros ×1
mingw ×1
open-source ×1
stl ×1
swig ×1
templates ×1