标签: standard-library

C++:所有"std"跨平台吗?

我一直在为这个问题尝试不同的搜索术语,我只是在谷歌和stackoverflow上发现噪音.如果我使用C++的标准库(std)编写代码,基本上可以保证为Windows,Mac和Linux编译(并希望按预期工作)?

c++ cross-platform std standard-library

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

在C中向后读取文本文件

在C中向后读取文件的最佳方法是什么?我知道一开始你可能会认为这没用,但大多数日志等都会在文件末尾附加最新的数据.我想从文件向后读取文本,将其缓冲为行 - 即

abc
def
ghi

应该读行ghi,def,abc.

到目前为止,我尝试过:

    #include <stdio.h>
    #include <stdlib.h>

    void read_file(FILE *fileptr)
    {
        char currentchar = '\0';
        int size = 0;

        while( currentchar != '\n' )
        {
            currentchar = fgetc(fileptr); printf("%c\n", currentchar);
            fseek(fileptr, -2, SEEK_CUR);
            if( currentchar == '\n') { fseek(fileptr, -2, SEEK_CUR); break; }
            else size++;

        }
        char buffer[size]; fread(buffer, 1, size, fileptr);
        printf("Length: %d chars\n", size);
        printf("Buffer: %s\n", buffer);


    }


    int main(int argc, char *argv[])
    {
        if( argc < …
Run Code Online (Sandbox Code Playgroud)

c text stream standard-library

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

什么是POSIX,可以取代它的任何其他接口标准?

我对C和C++编程的众多标准和接口感到困惑.有ANSI C,ISO C,GLIBC,POSIX,Win32,MFC等.这些标准之间有什么区别,它们如何相互关联?在什么情况下你会选择一个特定的标准?是否有显示关系的图表?

c c++ standards posix standard-library

13
推荐指数
1
解决办法
8593
查看次数

Swift的标准库和名称冲突

我知道Swift不使用名称空间,但是这些名称是在每个模块中定义的.首先,我不太清楚如何避免名称冲突 - 随意详细说明.

不过,我的主要问题是:假设我想要一个不使用NSTreeNode的树结构,所以我创建了自己的名为"TreeNode"的类.现在让我们假设Apple决定在Swift的标准库中包含一个用于构建树的类,并且正如预期的那样,他们将其命名为"TreeNode".那么会发生什么?我的自定义TreeNode将与标准库的TreeNode冲突......在这种情况下我是否必须更改所有代码?或许Apple会承诺Swift的标准库将来不会改变?

编辑:问题在这里得到解答(感谢@Martin R的评论)

naming namespaces naming-conventions standard-library swift

13
推荐指数
1
解决办法
4369
查看次数

如何解决numeric_limits <T> :: min()的不一致定义?

numeric_limits特性应该是获得各种类型信息的一般方式,能够做到这样的事情

template<typename T>
T min(const std::vector<T>& vect)
{
    T val = std::numeric_limits<T>::min();

    for(int i=0 ; i<vect.size() ; i++)
        val = max(T, vect[i]);

    return val;
}
Run Code Online (Sandbox Code Playgroud)

问题是(至少使用MS Visual Studio 2008)numeric_limits <int> :: min()返回最小的负数,而numeric_limits <double> :: min()返回最小的数!

谁知道这个设计背后的理性呢?是否有更好的(推荐?)方式使用numeric_limits?在我上面的具体功能中,我当然可以将T初始化为vect [0],但这不是我要找的答案.

又见(浮点专用)的讨论 在这里

c++ standard-library

12
推荐指数
3
解决办法
4242
查看次数

std :: multiset是否保证插入顺序?

我有一个std::multiset存储元素class A.我operator<为这个课提供了自己的实现.我的问题是,如果我在这个multiset中插入两个等效对象,他们的顺序是否有保证?例如,首先我将一个对象a1插入到集合中,然后将一个等效对象a2插入到该集合中.当我遍历集合时,我可以期待a1之前a2的结果吗?如果不是,有没有办法用multiset实现这个目的?

c++ stl standard-library data-structures

12
推荐指数
1
解决办法
3368
查看次数

如何实现Haskell中的库函数

我刚刚开始学习Haskell,并且会发现查看Haskell函数是如何实现的非常有用.我已经能够在不同的问题上找到标准前奏曲,但我现在对Data.List感兴趣.有没有办法找到这些功能的来源?

我真的很想看到排列和结点(其余的,但这些对我来说最有趣).

implementation haskell standard-library

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

使用std :: inner_product时零内部产品

下面的C++程序应该返回一个严格的正值.然而,它返回0.

怎么了 ?我怀疑是双重转换,但我无法弄清楚为什么以及如何.

#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{

    vector<double> coordinates;
    coordinates.push_back(0.5);
    coordinates.push_back(0.5);
    coordinates.push_back(0.5);

     cout<<inner_product(coordinates.begin(), coordinates.end(), coordinates.begin(), 0)<<endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ type-conversion standard-library

12
推荐指数
1
解决办法
1448
查看次数

具有自定义指针类型的内存分配器

我试图创建一个使用智能指针的自定义内存分配器.我没有发布代码,因为它太大而且没有添加太多信息.然后我用一个测试它std::vector.它在Xcode上运行得非常好.但是当我尝试在Visual Studio 12(2013)中构建相同的代码时,构建失败并出现以下错误:

... vector(873):错误C2660:' std::_Wrap_alloc< my_allocator< int > >::construct':函数不带2个参数

问题出在push_back方法中:

void push_back(value_type&& _Val)
    {
    ....
        this->_Getal().construct(this->_Mylast,
            _STD forward<value_type>(this->_Myfirst[_Idx]));
    ....
    }
Run Code Online (Sandbox Code Playgroud)

错误消息有点令人困惑.真正的问题是this->_Mylast类型my_allocator< int >::pointer,它是一个智能指针,而构造方法是期望的int*.

所以,问题很简单:自定义内存分配器中使用的指针类型有哪些要求?应该X::pointer可以转换为原始指针?如果是的话,它会让它们变得毫无用处.

实际上我希望这行代码看起来像:

this->_Getal().construct(addressof(*(this->_Mylast)),
            _STD forward<value_type>(this->_Myfirst[_Idx]));
Run Code Online (Sandbox Code Playgroud)

让我们尝试在C++标准中找到答案,其中说:

[17.6.3.5-5]分配器类型X应满足CopyConstructible(17.6.3.1)的要求.的X::pointer,X::const_pointer,X::void_pointer,和X::const_void_pointer类型应满足NullablePointer(17.6.3.3)的要求.对这些类型的构造函数,比较运算符,复制操作,移动操作或交换操作不应通过异常退出.X::pointer并且X::const_pointer还应满足随机访问迭代器的要求(24.2)

如果我们看看NullablePointer reqs,他们会添加一些其他要求:

[17.6.3.3] NullablePointer类型是一种类似指针的类型,支持空值.如果符合以下条件,则类型P满足NullablePointer的要求:
(1.1) - P满足EqualityComparable,DefaultConstructible,CopyConstructible,CopyAssignable和Destructible的要求......

如果我检查随机访问迭代器的要求,我也没有找到任何明确提到它的转换为原始指针.但是在很少的地方使用了方法addressof(例如24.2.1-5).

此外,它并不是Microsoft std::vector实现中唯一X::pointer与假定原始指针相等的地方.我想知道,我错过了什么?

编辑:我将在这里添加一段my_allocator deffinition:

class my_allocator
{
public:

typedef std::size_t          size_type;
typedef std::ptrdiff_t …
Run Code Online (Sandbox Code Playgroud)

c++ pointers memory-management standard-library c++11

12
推荐指数
1
解决办法
1564
查看次数

如何使用标准库嵌入Python3

我试图在一个(最终多平台)C++应用程序中嵌入Python.

重要的是我的应用程序包含自己的Python实现(与blender一样),因此它完全是自包含的.(否则它将成为配置雷区).

我有两个选择:

  1. 尝试嵌入没有标准库的Python3 (我在这里)

  2. 尝试使用标准库嵌入Python3 .

(2)需要什么?

有了这些信息,我就可以平衡每种方法的优点与设置它所需的工作量.

我的嵌入式Python将供我自己使用(而不是任何用户区脚本) - 主要是控制流/游戏逻辑.我将需要很少的标准库 - 也许我可以通过在必要时隧道回C++将其降低到0 - 例如,如果我需要一个随机数,我可以创建一个C++例程并从Python访问它.我已经涵盖了所有这些.

然而,它开始看起来好像即使最小的安装也必须包含一些stdlib组件,这提示了一个问题:"如果我必须包含一些,也许最好包括所有!"

python embedding standard-library python-3.x

12
推荐指数
1
解决办法
737
查看次数