标签: standard-library

C++标准库是否必须用C或汇编语言编写?

是否可以仅使用C++编写完整的C++标准库(当然包括STL,但只包含内部依赖项)?我会想象容器和<cstdlib>功能将在以下方面可行charS,bitshifts,以及循环和其他字节花哨的东西,但这样的东西例外,或许std::coutstd::cin似乎很难给我一个不依赖开始.假设有一组可用的OS功能,它们完全在汇编中实现(以避免任何C污染).

我假设编译器理解从类和虚函数到模板和函数重载的所有内容,这些是语言级别的东西,并且在库IMHO中没有位置.

如果以前曾经问过这个问题或者是一个非常愚蠢的问题,请原谅我.我不打算在这里开始一场C < - > C++战争,只是想弄清楚实施野兽的局限性,比如标准库...

谢谢!

c++ implementation standard-library

2
推荐指数
1
解决办法
845
查看次数

C++库的C部分是自动C99吗?

符合C++ 98/03/0x实现的所有函数是否完全符合C99?

我认为C++ 0x添加了一些C99(语言)功能,但从未听过或读过任何关于C库函数的确定性.

为了避免任何混淆,我在谈论使用<c*>标头集中声明的函数的C++程序.

谢谢.

c c++ c99 standard-library

2
推荐指数
1
解决办法
241
查看次数

c ++在遍历所有迭代器的同时擦除std :: vector.end()

我想从向量中删除一些迭代器,所以这就是我现在所拥有的.

void function(std::vector <class*> & vector)
{
    std::vector <class*>::iterator it;
    for(it = vector.begin(); iter != vector.end(); ++iter)
        {
            if(it->value == 1)
                vector.erase(it);
        }
    Display(vector);
    return;
}
Run Code Online (Sandbox Code Playgroud)

显然,当迭代器被移除时,这个代码给了我一个错误,它是向量中的最后一个,否则看起来它工作正常.我知道在这样的循环中修改向量可能不是理想的行为,但如果我必须这样做,那么最好的方法是什么?

谢谢.

c++ standard-library

2
推荐指数
1
解决办法
1373
查看次数

函数不会接受auto_ptr的迭代器

我写了一些我试图修复的有缺陷的Huff压缩代码.我做的第一件事就是将指针切换到auto_ptr(有理由我没有使用另一个智能指针).我创建了一个向量,auto_ptr但是当我尝试将auto_ptr传递给函数时,*(vector.begin())它不起作用.

我的功能代码我试图将所有权传递给(它是一个成员函数为set_node):

struct Node {
    int weight;
    char litteral;
    auto_ptr<Node> childL;
    auto_ptr<Node> childR;
    void set_node(int w, char l, auto_ptr<Node>& L(), auto_ptr<Node>& R()){
        weight = w;
        litteral = l;
        childL = L;
        childR = R;
    }
};
Run Code Online (Sandbox Code Playgroud)

这就是我尝试调用它的方式(p是节点):

p.set_node(w, '*', *nodes->begin(), *(nodes->begin()+1));
Run Code Online (Sandbox Code Playgroud)

这是向量声明的方式:

vector<auto_ptr<Node> >* nodes = new vector<auto_ptr<Node> >;
Run Code Online (Sandbox Code Playgroud)

c++ auto-ptr standard-library huffman-code

2
推荐指数
1
解决办法
217
查看次数

直接参考Python的标准库

事实证明,PyQt重新定义了一个函数hex(),遗憾的是它使python标准库hex()无法使用.我正在开发一个大型软件项目,它已经设置了*进口:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
Run Code Online (Sandbox Code Playgroud)

...等等

我需要标准的python hex()函数,有什么方法可供我参考吗?我在想一个stdlib.hex()或类似的东西?

目前我丑陋的解决方法是:

pyHex = hex
from PyQt4.QtCore import *
from PyQt4.QtGui import *
hex = pyHex
Run Code Online (Sandbox Code Playgroud)

我真的更愿意不必这样做.

谢谢.

python standard-library pyqt4 python-2.7

2
推荐指数
1
解决办法
174
查看次数

为什么Scala标准库中的`Numeric`没有`maxValue`?

有没有一个很好的理由为什么NumericScala标准库中没有maxValueminValue函数.它似乎相当有用,甚至在某些情况下使用它也是必要的.

例如,一个人可能能够定义像这样的scalacheck生成器:

def arbNumeric[T:Choose](implicit num: Numeric[T): Arbitrary[T] = {
  Arbitrary(Gen.chooseNum(num.MinValue, num.MaxValue))
}
Run Code Online (Sandbox Code Playgroud)

而不是必须为每个Int,Long等写出相同的东西:

val arbInt: Arbitrary[Int] = {
  Arbitrary(Gen.chooseNum(Int.MinValue, Int.MaxValue))
}
def arbLong: Arbitrary[Long] = {
  Arbitrary(Gen.chooseNum(Long.MinValue, Long.MaxValue))
}
def arbShort: Arbitrary[Short] = {
  Arbitrary(Gen.chooseNum(Short.MinValue, Short.MaxValue))
}
...
Run Code Online (Sandbox Code Playgroud)

scala standard-library

2
推荐指数
1
解决办法
250
查看次数

当你有一个名为max的变量时,使用Python的max函数?

Python包含内置的max()函数.但是,尽管它内置于它不是一个关键字.也就是说,你被允许这样做max=4.这是有道理的,因为最大的东西出现了很多.但!如果使用max作为变量,则禁用该范围中的max函数.

所以,如果你这样做:

max = 4
max(1, 2)
Run Code Online (Sandbox Code Playgroud)

你会得到一个错误int object not callable.再次,有道理.但有没有办法指定你想要max函数?喜欢std.max()?这适用于所有其他内置功能.

python scope standard-library built-in

2
推荐指数
1
解决办法
1270
查看次数

为什么在C++中对向量使用索引运算符被认为是不好的样式?

我正在研究一个使用矢量的程序.所以我做的第一件事是声明我的矢量.

std::vector<double> x;
x.reserve(10)
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,这也被认为是不好的做法吗?我应该输入std::vector<double> x(10)吗?)

然后我继续为向量赋值,并询问它的大小.

for (int i=0; i<10; i++)
{
    x[i]=7.1;
}
std::cout<<x.size()<<std::endl;
Run Code Online (Sandbox Code Playgroud)

我不知道它会返回0,所以经过一些搜索我发现我需要使用push_back方法而不是索引操作符.

for (int i=0; i<10; i++)
{
    x.push_back(7.1);
}
std::cout<<x.size()<<std::endl;
Run Code Online (Sandbox Code Playgroud)

现在又回来了10.

所以我想知道的是为什么索引操作符允许我x在给定索引处访问向量中的"存储"值,但不会改变其大小.另外,为什么这是不好的做法?

c++ indexing vector standard-library push-back

2
推荐指数
2
解决办法
1218
查看次数

什么,确切地说,memcmp应该返回?

我想知道函数memcmp必须返回什么.

我一直在互联网上搜索,通常,memcmp定义说明如下:

memcmp()函数返回一个大于,等于或小于零的整数,因为s1指向的对象大于,等于或小于s2指向的对象.

这是从来没有明确说什么,究竟,则返回:这是两个字节的值之间的差异,或者是-1,0或1?我很迷惑:

  • memcmp在小程序中测试函数时,即使评估的两个字节之间的差值大于1或小于-1,它也会返回-1,0或1.
  • 在查看memcmpInternet上命名的函数时,它们几乎都返回2个字节之间的差异,作为int,而不是返回-1,0或1.

由于我无法得到足够精确的函数定义memcmp,我在这里问这个问题:究竟是什么函数memcmp应该返回?在某处有"官方"源代码吗?(我已经看过很多源代码,memcmp但没有给我一个答案:我假设它们不是写在库string.h中的函数,至少不在我的计算机上......)

c standard-library memcmp language-lawyer

2
推荐指数
2
解决办法
1345
查看次数

C ++标准库中是否有maxheap?

我知道std::priority_queue该类实现了最小堆。有没有办法将其用作最大堆?还是有替代的Maxheap结构?我知道我可以std::make_heap()std::vectorlambda 上使用该函数来创建自己的Maxheap,但是随后使用诸如std::pop_heap()怪异的函数,并且我认为它们不易于使用。应该有一种更简单的方法,就像我认为的min_heap(priority queue)。

c++ priority-queue standard-library c++-standard-library max-heap

2
推荐指数
2
解决办法
446
查看次数