问题标签 [standard-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
401 浏览

c++ - std::ifstream 类的设计

我们这些已经看到 STL 之美的人尝试尽可能多地使用它,并鼓励其他人在我们看到他们使用原始指针数组的任何地方使用它。Scott Meyers写了一整本关于 STL 的书,标题为Effective STLifstream然而,他们更喜欢的开发人员发生了char*什么std::string。我想知道为什么的第一个参数ifstream::open()是 type const char*,而不是const std::string &. 请看一下它的签名:

为什么这个?为什么不这样:

这是设计的严重错误吗?还是这个设计是故意的?可能是什么原因?我看不出他们为什么char*偏爱std::string. 请注意,我们仍然可以传递char*给采用std::string. 这不是问题!

顺便说一句,我知道这ifstream是一个 typedef,所以不要对我的标题发表评论。:P。它看起来很短,这就是我使用它的原因。

实际的类模板是:

0 投票
6 回答
397 浏览

c++ - 是否允许在 std::string 的实现中进行这种优化?

我只是在考虑std::string::substr. 它返回一个新std::string对象,这对我来说似乎有点浪费。为什么不返回一个引用原始字符串内容并且可以隐式分配给 a 的对象std::string?一种对实际抄袭的懒惰评价。这样的类可能看起来像这样:

此类的公共接口将模仿 real 的所有只读操作std::string,因此使用将是无缝的。std::string然后可以有一个新的构造函数,它采用 astring_ref所以用户永远不会更聪明。当您尝试“存储”结果时,您最终会创建一个副本,因此引用指向数据然后对其进行修改没有真正的问题。

这个想法是这样的代码:

std::string总共构造的对象不超过 2个。对于执行大量字符串操作的代码,这似乎是一个有用的优化。当然,这不仅适用于std::string,还适用于任何可以返回其内容子集的类型。

据我所知,没有实现这样做。

我想问题的核心是:

给定一个可以根据需要隐式转换为 a 的类,std::string它是否符合库编写者将成员的原型更改为返回类型的标准?或者更一般地说,库编写者是否有余地在这些类型的情况下返回“代理对象”而不是常规对象作为优化?

我的直觉是这是不允许的,原型必须完全匹配。鉴于您不能仅对返回类型进行重载,那么库编写者将没有空间利用这些类型的情况。就像我说的,我认为答案是否定的,但我想我会问:-)。

0 投票
1 回答
1938 浏览

python - 使用标准库在 Python 中检索挂起时间?

如何使用标准库在 Python 中检索挂钟时间?

这个问题和这个问题会暗示类似clock_gettime(CLOCK_MONOTONIC_RAW)/proc/uptime最适合Linux的东西。在 Windows 上,time.clock()具有预期的效果。

我会使用time.time(),但不能保证该函数返回单调(和线性)增加的时间值。

0 投票
3 回答
2353 浏览

java - Write and read byte[] from file

I'm looking for something simple (no external lib preferably) to write and load a byte[] from a file. More or less something like [Python's pickle][1].

The problem seems to be that I cannot read the Object structure from a file like that. In a hex-editor furthermore the file "somebytes" contains just a couple or 0s. So it doesn't seem the FileOutputStream puts any of the content ("t" or the byte-equivalent) into it.

[1] http://wiki.python.org/moin/UsingPickle

0 投票
4 回答
1904 浏览

java - 用 Java 中的自定义类替换默认 String 类

我想实现自己的 String 类,并在使用双引号时让 Java 使用它。
它应该看起来像这样:MyString s = "foo"并且 java.lang.String 不应该被实例化。

不接触编译器有可能吗?
怎么做?

我问的原因是我需要程序中的字符串需要验证最坏情况的执行时间。为了验证它,所有循环都必须有界(边界在注释中指定)。此外,为了方便起见,我希望能够使用双引号,因为写作MyString s = new MyString({'f','o','o'})确实会降低可读性。

0 投票
2 回答
114 浏览

python - Python标准模块中是否有此功能的类似物?

我正在寻找一个等效于以下手写函数的标准函数(运算符、装饰器):

谢谢!

0 投票
3 回答
4553 浏览

c++ - 标准库 (STL) 容器是否支持一种 nothrow 分配形式?

new在分配大块内存时,运算符(或对于 POD,malloc/calloc)支持一种简单而有效的失败形式。

假设我们有这个:

std::containers 是否有任何此类构造,或者我是否总是必须std::vector与朋友一起处理(预期的!!)异常?


是否有一种方法可以编写一个自定义分配器来预分配内存,然后将此自定义分配器传递给向量,这样只要向量不要求比您预先放入分配器更多的内存,它就不会失败?


事后思考bool std::vector::reserve(std::nothrow) {...}:除了正常的储备函数之外,真正需要的是成员函数。但是,由于只有在分配器也被扩展以允许 nothrow 分配时,这才有意义,所以它不会发生。似乎(nothrow)新的东西毕竟对某些东西有好处:-)


编辑:至于我为什么要问这个:

我在调试时想到了这个问题(调试器的第一次机会/第二次机会异常处理):如果我将调试器设置为第一次机会捕获任何 bad_alloc,因为我正在测试低内存条件,如果它还捕获了那些已经在代码中很好预期和处理的 bad_alloc 异常。这不是/不是一个真正的大问题,但我突然想到,异常是针对特殊情况的,而我已经预料到代码中每个奇怪的调用都会发生的事情并不例外。

如果new (nothrow)有它的合法用途,那么 vector-nothrow-reserve 也会有。

0 投票
3 回答
1647 浏览

go - 使用标准库的好示例 Go 代码

在学习一门新语言时,对我来说相当艰巨的事情之一是标准库:它很大吗?它里面有什么?使用频率如何?它使用什么约定?

我一直在阅读 Go 教程和 Effective Go,但我想看一些完整(但不太复杂)程序的惯用示例代码,看看它们如何使用 Go 的标准库。

如果您有一个示例项目愿意分享,或者您知道一个很好学习的项目,我将不胜感激!

0 投票
5 回答
939 浏览

c++ - 返回标准容器是否会产生容器内容的副本?

如果我有一个返回 STL 容器的函数,我是否会产生标准容器全部内容的副本?

例如这是:

比这更好:

容器里有什么重要吗?例如会返回一个这样的容器:

比这更昂贵的操作:

谢谢,保罗


编辑: 这是 C++03。不幸的是,C++0x 解决方案是不可接受的。

Edit2: 我正在使用 Microsoft Visual Studio 2008 编译器。

0 投票
2 回答
7087 浏览

c++ - 为什么 ofstream 需要刷新?

如果我运行以下代码,则根本不会创建任何文件:

但是,如果我在关闭之前添加一个 flush() ,它会起作用:

标准库是否真的需要这个,或者它是 Visual C++ CRT 中的一个错误?