问题标签 [stl]

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 回答
1881 浏览

c++ - 什么是 tr1::result_of 的好用例?

我听说 tr1::result_of 在 Boost 内部经常使用......我想知道是否有任何好的(简单)用例用于 tr1::result_of 我可以在家里使用。

0 投票
6 回答
55646 浏览

c++ - 字符串 c_str() 与 data()

c_str()我已经阅读了几个地方,和data()(在 STL 和其他实现中)之间的区别在于c_str()它总是以空值终止,而data()不是。据我在实际实现中所见,它们要么做同样的事情,要么data()调用c_str().

我在这里想念什么?在哪些场景中使用哪个更正确?

0 投票
8 回答
16093 浏览

c++ - 列表迭代器不可递增

我有一个使用 Visual Studio 2003 构建的旧项目,最近我用 vs2005 重新编译了它。但是,在运行时,我收到以下错误:

列表迭代器不可递增

我将程序跟踪到此功能:

我不是 C++ 专家,这是 VS 调试器给我的。有人可以向我解释问题是什么吗?

谢谢

0 投票
5 回答
1151 浏览

c++ - VS2005 的 STL 最佳实现是什么?

我目前正在为 VS2005 使用 STL 的默认实现,但我对它并不满意。也许有更好的东西?

0 投票
1 回答
2591 浏览

c++ - 调用 C++ STL 容器的 value_type 的静态成员函数

我试图弄清楚为什么以下不起作用。我有一个 std::vector ,我想调用它的静态成员函数,它包含 value_type ,如下所示:

其中 Vector 实际上是模板类型的 typedef:

而静态成员函数 Dim() 实际上内联了 Vector 的维数 U。

现在编译器返回一条错误消息说:

这让我很困惑。我可以将明显有问题的行替换为

这有效,但显然很难看,因为它硬编码了关于 v 的 value_type 的假设......谢谢!

0 投票
9 回答
20492 浏览

c++ - Visual c++“为每个”可移植性

我最近才发现 Visual C++ 2008(也许还有更早的版本?)支持for eachstl 列表等语法以促进迭代。例如:

我很高兴发现它,但是当有人决定我需要能够在 gcc 或其他编译器中编译我的代码时,我担心可移植性。这种语法是否得到广泛支持,我可以在不担心可移植性问题的情况下使用它吗?

0 投票
4 回答
7754 浏览

c - C 模拟转 STL

只是因为我很好奇——是否有任何 C 类比 C++ 中 STL 的功能?我已经看到有人提到了一个名为 glib的GTK+库,一些人认为它可以满足要求,但是还有其他库可以在 C 中提供 STL 功能吗?

0 投票
26 回答
515969 浏览

c++ - 连接两个 std::vectors

如何连接两个std::vectors?

0 投票
8 回答
4140 浏览

c++ - 有没有一种方便的方法可以将 std::pair 包装为新类型?

我经常发现自己使用 std::pair 将两个相关数量的逻辑分组定义为函数参数/返回值。一些示例:行/列、标签/值等。

很多时候,我真的应该滚动自己的课程,而不是仅仅使用 std::pair。当事情开始崩溃时很容易看出——当代码中到处都是 make_pair 时,首先,其次,很难记住什么是什么——与std::pair<int, int>type 相比,an 传达的意义更少Position

您发现什么是将 std::pair 的功能包装在传达真实含义的类型中的最佳方法?

以下是我考虑过的一些事情:

这至少在传递类型时为类型提供了一个有意义的名称,但类型不是强制的,它仍然只是一对,并且大多数相同的问题仍然存在。不过这写起来很简单。

这更好,因为我们可以通过一个合理的描述性名称来访问变量。这里的问题是您仍然可以访问 first 和 second,因此抽象很容易泄漏。此外,通过函数访问简单变量会使语法烦人。

显而易见的下一步是将继承设为私有:

所以现在至少我们已经摆脱了对first和second的访问,但是现在又出现了一个新问题。当我们想将类型存储在 std::set 中时,我们现在无法访问 operator< 重载,因为我们无法访问 first 和 second。这意味着我们必须为我们想要的每个运算符重载定义一个转发函数。对我来说,这通常是 ==、!= 和 <,但可能还有其他我想要的。是的,我知道我可能不应该重载 operator< 只是为了将它粘贴在关联容器中,但它让一切变得如此简单......为每种新类型定义这些运算符很痛苦,我们仍然必须通过函数访问. 我们可以解决这个问题:

所以现在我们有了简单的变量访问,但是现在定义重载的操作符更加痛苦,因为不是仅仅将它们转发到对的实现,我们实际上每次都必须重新实现它们......

有没有我忽略的解决方案可以让这件事变得简单而没有缺点?如果没有,你会倾向于哪个?

0 投票
5 回答
758 浏览

c++ - 在哪里可以查看 C++ 标准

可能重复:
在哪里可以找到当前的 C 或 C++ 标准文档?

我想在我正在处理的当前程序中使用 STL,而供应商不支持我认为合理的 STL,工作不是我认为合理的。我一直找不到一个 C++ 标准或 STL 标准,而不仅仅是一个 API,这让我想知道我的解释是否正确,或者供应商的解释是否正确。我已经在SGI 的网站上花费了很多时间。有什么推荐吗?此外,是否有任何不是 API 的文档被视为标准?