Tag: C#的

布尔运算符可以和预处理器一起使用吗?

我想知道是否有可能有一个预处理器OR或AND语句? 我有这个代码,我想在_DEBUG或_UNIT_TEST标记(?)下运行。 我想要的是如下所示: #if _DEBUG || _UNIT_TEST //Code here #endif 如果这是不可能的,是否有一种解决方法来实现相同的事情,而不必使用#elseif重复代码?

在ASP.NET / C#中使用Plupload

UPDATE 我能够让所有的东西都能正常工作,而且我只想用最新的代码发布。 我使用了Darin Dimitrov关于使用单独的通用http处理程序来处理file upload的build议,所以这是我想出的代码…让我知道如果你有问题。 <%@ WebHandler Language="C#" Class="Upload" %> using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.IO; using System.Net; using System.Web; public class Upload : IHttpHandler { public void ProcessRequest(HttpContext context) { /** * If 'newTicket' is "false", then the directory to upload to already exists and we can extract it from […]

无符号整型(C ++)与UINT(C#)

以下是C#代码: static void Main(string[] args) { uint y = 12; int x = -2; if (x > y) Console.WriteLine("x is greater"); else Console.WriteLine("y is greater"); } 这是c + +代码: int _tmain(int argc, _TCHAR* argv[]) { unsigned int y = 12; int x = -2; if(x>y) printf("x is greater"); else printf("y is greater"); return 0; } […]

没有依赖于模板参数的参数

我正在尝试执行以下操作: template <class T> std::ifstream& operator>> (std::ifstream& fin, List<T> l) { T temp; l.resize(0); fin >> ignore(1,'\t'); for(ListIterator<T> i=l.begin();i!=l.end();i++) { fin >> ignore(1,'\t') >> temp; l.push_back(temp); } return fin; } 我必须从文件中读取所有内容。 每个字段用'\t'字符分隔,所以我必须忽略'\t'字符。 错误日志如下: /home/ramy/Documents/C++/Prova/Util.h||In function 'std::ifstream& Util::operator>> (std::ifstream&, Util::List<T>)':| /home/ramy/Documents/C++/Prova/Util.h|431|error: there are no arguments to 'ignore' that depend on a template parameter, so a declaration […]

应该从不使用静态内联函数吗?

使用inline关键字有两个含义(§7.1.3 / 4): 它暗示了编译器在调用点上函数体的replace比通常的函数调用机制更可取。 即使内联replace被省略,其他规则(特别是一个定义规则 )也是内联的。 通常任何主stream的编译器都会根据需要在调用点上replace函数体,所以不需要标记为#1函数。 更进一步的#2 ,据我所知,当你声明一个函数为static inline函数, 函数上的static关键字强制inline函数具有内部链接( 内联函数具有外部链接 )这样的函数的每个实例都被视为一个单独的函数( 每个函数的地址不同 ),并且这些函数的每个实例都有它们自己的静态局部variables和string文本的副本( 内联函数只有这些副本 ) 因此,这样的函数像任何其他static函数一样起作用,并且关键字inline不再重要,变得多余。 所以,实际上标记一个函数static和inline都没有用处。 要么它应该是static ( 不是最优选的 )或者inline ( 最优选的 ), 那么,在一个几乎没用的函数上使用static和inline ?

VexCL,Thrust和Boost.Compute之间的区别

只是对这些库的粗略理解,它们看起来非常相似。 我知道VexCL和Boost.Compute使用OpenCl作为后端(虽然v1.0版本VexCL也支持CUDA作为后端),而Thrust使用CUDA。 除了不同的后端,这两者之间有什么不同。 具体来说,他们解决了什么样的问题空间,为什么要使用另一个。 另外,在Thrust FAQ上也是这样说的 OpenCL支持的主要障碍是缺less支持C ++模板的OpenCL编译器和运行库 如果是这样,VexCL和Boost.Compute甚至可能存在。

在C ++中的vector存储

我希望存储一个d维点的大向量(d fixed和small:<10)。 如果我将一个Point定义为vector<int> ,我认为一个vector<Point>将在每个位置存储一个指向Point的指针。 但是,如果将Point定义为像std::tuple<int,int,…,int>或std::array<int, d>这样的固定大小的对象,程序会将所有点存储在连续的内存中还是将间接的额外水平仍然存在? 如果答案是数组避免了额外的间接寻址,那么在扫描vector<Point>会不会影响性能(caching利用本地化)?

R编译器是否存在?

我想知道部署R的最佳方式。Matlab有“matlab编译器”(MCR)。 对于将R编译为C或C ++的R,过去曾经有类似的讨论。 有没有人有任何使用由John Garvin在Rice开发的R到C编译器(RCC)的经验? 我研究过它,它似乎是编译R代码到可执行代码的唯一项目。 而据我所知,它还没有被使用。 [编辑1:] :要清楚,我知道有R和R(rJava,rcpp,Rpy等)的C和C ++(以及Java,Python等)接口。 我想知道具体的方式来编译和部署R代码,而无需事先安装R。 John Mellor-Crummey告诉我,他们还在RCC上工作,希望能在4个月左右(最早)提供。 如果我find其他东西,我会进一步更新。

fastcall真的更快吗?

快速调用约定是否比其他调用约定更快,如cdecl? 那里是否有任何基准显示如何通过调用约定来影响性能?

在C ++中使用密钥更新使用最小优先级队列的最简单的方法

有时候在编程竞赛等时候,我们需要一个简单的最小优先级队列的实现,用reduce-key来实现Dijkstraalgorithm等等。我经常使用set <pair <key_value,ID>和一个数组(映射ID – > key_value )一起来实现这一点。 将元素添加到集合需要O(log(N))时间。 要从N个元素中构build优先级队列,我们​​只需将它们逐个添加到集合中。 这总共需要O(N log(N))时间。 具有min key_value的元素只是该集合的第一个元素。 探测最小的元素需要O(1)次。 删除它需要O(log(N))时间。 为了testing一些ID = k是否在集合中,我们首先在数组中查找它的key_value = v_k,然后search集合中的元素(v_k,k)。 这需要O(log(N))时间。 为了将一些ID = k的key_value从v_k改为v_k',我们首先在数组中查找它的key_value = v_k,然后search该集合中的元素(v_k,k)。 接下来,我们从集合中删除该元素,然后将元素(v_k',k)插入集合中。 然后,我们也更新数组。 这需要O(log(N))时间。 虽然上述方法可行,但大多数教科书通常build议使用二进制堆实现优先级队列,因为构build二进制堆的时间只是O(N)。 我听说在C ++的STL中有一个使用二进制堆的内置优先级队列数据结构。 但是,我不知道如何更新该数据结构的key_value。 在C ++中使用密钥更新来使用最小优先级队列的最简单和最有效的方法是什么?