Tag: C#的

C + + STL集更新是乏味的:我不能改变一个元素

由于在cppreference上没有这样的API,所以我发现更新操作很麻烦 。 所以我现在做的是这样的: //find element in set by iterator Element copy = *iterator; … // update member value on copy, varies Set.erase(iterator); Set.insert(copy); 基本上由Set返回的迭代器是一个const_iterator,你不能直接改变它的值。 有没有更好的方法来做到这一点? 或者,也许我应该重写创build自己的(我不知道它是如何工作的)

C中的随机数组

我正在寻找一个ANSI C中的函数,它将像PHP的shuffle()一样随机化一个数组。 有这样一个function,还是我必须自己写? 如果我必须自己写,那么最好/最高效的方法是什么? 我的想法到目前为止: 比方说迭代100次,然后用另一个随机索引交换一个随机索引 创build一个新的数组,并用第一个随机索引来填充,每次检查索引是否已经被使用(performance = 0 complexity = serious)

C ++:临时参数的寿命?

当创build一个MyClass的新实例作为一个像这样的函数的参数: class MyClass { MyClass(int a); }; myFunction(MyClass(42)); 这个标准是否使得任何受害者的parsing器的时间? 具体来说,我可以假设它会在调用myFunction()之后的下一个语句之前被调用吗?

将string分成一定大小的块

假设我有一个string: string str = "1111222233334444"; 我怎样才能把这个string分成一些大小的块? 例如,将其分解成4个大小将返回string: "1111" "2222" "3333" "4444"

C函数语法,在参数列表之后声明的参数types

我对C相对来说比较陌生。我遇到过一种我从未见过的函数语法forms,参数types是在参数列表之后定义的。 有人可以向我解释它是如何不同于典型的C函数语法? 例: int main (argc, argv) int argc; char *argv[]; { return(0); }

如何dynamic评估C#expression式?

我想做相当于: object result = Eval("1 + 3"); string now = Eval("System.DateTime.Now().ToString()") as string 继Biri的链接后 ,我得到了这个片段(修改为删除过时的方法ICodeCompiler.CreateCompiler() : private object Eval(string sExpression) { CSharpCodeProvider c = new CSharpCodeProvider(); CompilerParameters cp = new CompilerParameters(); cp.ReferencedAssemblies.Add("system.dll"); cp.CompilerOptions = "/t:library"; cp.GenerateInMemory = true; StringBuilder sb = new StringBuilder(""); sb.Append("using System;\n"); sb.Append("namespace CSCodeEvaler{ \n"); sb.Append("public class CSCodeEvaler{ \n"); sb.Append("public object EvalCode(){\n"); […]

如何创buildLINQexpression式树来select一个匿名types

我想使用expression式树dynamic地生成下面的select语句: var v = from c in Countries where c.City == "London" select new {c.Name, c.Population}; 我已经研究出如何生成 var v = from c in Countries where c.City == "London" select new {c.Name}; 但我似乎无法find一个构造函数/重载,让我指定多个属性在我selectlambda。

任何人都知道一个很好的解决方法,缺乏枚举通用约束?

我想要做的是这样的:我已经枚举了标记值的组合。 public static class EnumExtension { public static bool IsSet<T>( this T input, T matchTo ) where T:enum //the constraint I want that doesn't exist in C#3 { return (input & matchTo) != 0; } } 那么我可以这样做: MyEnum tester = MyEnum.FlagA | MyEnum.FlagB if( tester.IsSet( MyEnum.FlagA ) ) //act on flag a 不幸的是C#的generics约束没有枚举限制,只有类和结构。 C#没有看到枚举作为结构(即使它们是值types),所以我不能像这样添加扩展types。 任何人都知道解决方法?

具有负值的模运算符

为什么做这样的操作: std::cout << (-7 % 3) << std::endl; std::cout << (7 % -3) << std::endl; 给出不同的结果? -1 1

在C ++中保证临时的生命期?

C ++是否为函数调用中创build的临时variables的生命周期提供了保证,但不作为参数使用? 下面是一个示例类: class StringBuffer { public: StringBuffer(std::string & str) : m_str(str) { m_buffer.push_back(0); } ~StringBuffer() { m_str = &m_buffer[0]; } char * Size(int maxlength) { m_buffer.resize(maxlength + 1, 0); return &m_buffer[0]; } private: std::string & m_str; std::vector<char> m_buffer; }; 以下是你将如何使用它: // this is from a crusty old API that can't be changed void GetString(char […]