我还是一名学生,我觉得Euler项目非常有趣.
有时问题需要比原始类型更大的计算.我知道你可以实现它,但我懒得这样做,
所以我尝试了很少的库,
MAPM ::非常好的性能,但它只提供大浮点数,可以检查它是否是整数.非常好接受输入,但讨厌提供输出,并编译像魔术与Visual C++ 2008快递.
bigint ::一个小的,但需要在很多部分重新设计.使用非常简单,但功率非常有限,与其他产品相比非常慢.只有大整数.
ttmath ::我迄今为止尝试过的最美丽的一个!,只包含一些文件,你拥有令人难以置信的力量/简洁性.在Visual C++ 2008 express中编译像魔术一样.它很快,因为它提供固定长度的数字.它是在C++中使用元编程构建的.我看到的唯一缺点是,数字在运行时的长度并不是任意的,但是在编写代码时可以非常容易地拥有1024K数字,
ttmath::UInt<1024 * 1024> reallyHugeUnsignedInteger;
Run Code Online (Sandbox Code Playgroud)
它提供三种类型:signed,unsigned和float.
我试着在VC2008 express下编译gmp,但是我失败了!我知道它是最好的,但是对于VC2008 Express下的初学者来说,没有哪个容易编译,如果你指向一个在VC下编译gmp的教程,我也很感激.
编辑::如果您知道如何使用VC 2008编译gmp,请向我解释并获得赏金:)
EITD ::似乎我没有使用正确的术语,所以这里是Windows的神奇GMP!适用于VC 2008 :) MPIR
老实说,我只是没有在C++标准库中得到以下设计决定.将宽字符写入文件时,将wofstream转换wchar_t为char字符:
#include <fstream>
#include <string>
int main()
{
using namespace std;
wstring someString = L"Hello StackOverflow!";
wofstream file(L"Test.txt");
file << someString; // the output file will consist of ASCII characters!
}
Run Code Online (Sandbox Code Playgroud)
我知道这与标准有关codecvt.还有codecvt的utf8在Boost.此外,还有一个codecvt用于utf16由马丁·约克在这里SO.现在的问题是,为什么在standard codecvt转换宽字符?为什么不按原样写人物!
另外,我们是否会unicode streams使用C++ 0x或者我在这里遗漏了什么?
在硬件中实现它是否值得?如果是,为什么?如果不是为什么不呢?
对不起,我觉得很清楚我在谈论十进制有理数!好的东西比如DecNumber ++ for C++,decimal for .NET ...希望现在很清楚:)
夏天快到了,我和一群朋友正准备好了:)
我们决定构建一个编译时任意精度的无符号整数.我们想为库提供一组整数算法(函数).我们已经看到了对这样一个库的许多请求(SoC2010,C++ 0x标准库愿望清单).此外,bigint通常需要常规运行时,但我们不想进入内存管理的麻烦.这个想法来自一个名为TTMath的图书馆不幸的是,这个库只能在特定平台上运行,因为Assembly在库中被广泛使用.我们想编写一个标准库,具体取决于C++标准库和Boost.此外,我们希望在当前编译器中使用可用的C++ 0x工具,如用户定义的文字和其他.这在技术上会使图书馆暂时不标准,但我们认为新标准将是正式的,这是一个时间问题.
您对整个过程的提示,包括设计,实施,文档,图书馆的可维护性,都非常受欢迎.我们是一群学生和应届毕业生,他们在夏天寻找有趣的东西,但我们看到Boost充满了大师,我们不想忘记太明显的事情.我们在线沟通,所以没有共享的白板:(
以下是使用此类库的示例:
typedef our_namespace::uint<512> uint512_t;
// declaring an unsigned int with 512 bits width.
// After that the user is supposed to deal with it just like the native types.
Run Code Online (Sandbox Code Playgroud)
谢谢,
我知道这个问题似乎很愚蠢,但事实并非如此.我的意思是它究竟是什么.我对解析问题有一个公平的理解.我知道BNF/EBNF,我在我的一个大学课程中编写语法来解析简单的无语境语言.我以前从未见过正则表达式!我记得的唯一一件事就是无上下文语法可以完成正则表达式所能做的所有事情.
此外,通常的编码解析字符串是否有用?一个简单的例子会有所帮助.
虽然我喜欢用C++编程,但我讨厌这样的想法:
这个类不满足这些框架的需求吗?我的意思是班上有什么问题?!
std::basic_string vs QString vs wxString vs .............standard stringstandard string
只是要强调,下面是一个重要的问题:
你是否在你将要使用的每个框架中学习框架的"字符串"?您是否会通过尝试在任何地方进行调整来坚持标准字符串类?
谢谢...
我在大学里瞥见了Hoare Logic.我们做的很简单.我所做的大部分工作都证明了由while循环,if语句和指令序列组成的简单程序的正确性,但仅此而已.这些方法似乎非常有用!
工业上使用的正式方法是否广泛?
这些方法是否用于证明任务关键型软件?
我刚学会Java.我对Java感到厌倦,一段时间后又回到了C++.我认为C#与Java类似.在对C#进行一些阅读之后,我对C#和Java之间相似性的假设是不正确的.我在C#中发现了许多强大的概念,我喜欢在Java中看到它.无论如何,除了一件事,我读到的很多内容对我都有意义.我一直听说C#是面向组件的语言!维基百科对这个概念毫无用处.
当你说C#是面向组件的语言时,简单来说是什么意思?!一个简单的例子将不胜感激.
是否有一个经验法则来决定何时使用旧语法()而不是新语法{}?
要初始化结构:
struct myclass
{
myclass(int px, int py) : x(px), y(py) {}
private:
int x, y;
};
...
myclass object{0, 0};
Run Code Online (Sandbox Code Playgroud)
现在,vector例如,它有许多构造函数.每当我做以下事情时:
vector<double> numbers{10};
Run Code Online (Sandbox Code Playgroud)
我得到一个1元素的向量而不是一个有10个元素的向量,因为其中一个构造函数是:
explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator() );
Run Code Online (Sandbox Code Playgroud)
我怀疑每当一个类定义一个initializer list构造函数时,就像一个向量一样,它会被{}语法调用.
所以,我正在思考的是正确的.即只有当一个类定义一个初始化列表构造函数来调用另一个构造函数时,我才应该恢复到旧的语法吗?例如,纠正上述代码:
vector<double> numbers(10); // 10 elements instead of just one element with value=10
Run Code Online (Sandbox Code Playgroud) 请看看我想做什么:
#include <iostream>
namespace first
{
template <class T>
class myclass
{
T t;
public:
void who_are_you() const
{ std::cout << "first::myclass"; }
};
}
namespace second
{
using first::myclass;
template <>
class myclass <int>
{
int i, j;
public:
void who_are_you() const
{ std::cout << "second::myclass"; }
};
}
Run Code Online (Sandbox Code Playgroud)
这是不允许的.请问,请说明为什么专业化不能在不同的命名空间中,以及有哪些可用的解决方案?此外,它是在C++ 0x中修复的东西吗?
这将让我举例来说,专注std::max,std::swap,std::numeric_limits,等.不加东西诉诸未定义行为::std::?
@AndreyT这是我如何使用它:
// my_integer is a class
std::numeric_limits<my_integer>::max(); // specialized std::numeric_limits for my_integer
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?