小编ein*_*ica的帖子

C99是否要求"int64_t"类型可用?

C99标准是否要求符合标准的编译器具有64位int64_t 定义(和可用)?或者它是可选的,恰好被所有流行的编译器定义?我显然要特别询问CPU无法直接处理64位值的平台,但问题更为笼统

我不能真正从C数据类型维基百科页面中找出这一点,也不能从这个相关问题的答案中解决这个问题.

c 64-bit c99 language-lawyer

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

C99 中的 _Complex 类型的行为与 C++ 中的 std::complex<> 类似吗?

我最近注意到C99 中存在复数值类型(在注意到它们的构造宏是 C11 的一个功能之后)。

由于这是 C,所以这些是内置类型,而不是具有重载运算符等的结构。但是 - 我是否可以将它们视为基于 C++ 的模板std::complex?IE。实际上float _Complex与 相同并且std::complex<float>double _Complex相同std::complex<double>

注意:当然,它们具有完全相同的行为,因为 C++ 具有 C 没有的功能,但可以认为我们将自己限制在除这两种类型之外的“C 子集”。

如果它们实际上相同 - 请解释它们有何不同。

c++ multilingual complex-numbers complextype c11

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

如何通过引用构建向量的子范围?

我目前正在利用范围构造函数std::vector来创建给定子范围的另一个向量。

std::vector<int> myVect { 1, 2, 3, 4 };

std::vector<int> subrangeVector(myVect.begin(), myVect.begin() + 2);
Run Code Online (Sandbox Code Playgroud)

但是,这会导致 myVect 的范围值被复制并占用额外的内存。当使用有限的内存和/或非常大的元素类型时,这是不可取的。

如何通过引用构建另一个向量的子范围?

我的目标的简化解释如下:

void fun(std::vector<int> & v) { v.at(0) = 1; }

int main()
{
    std::vector<int> myVect { 1, 2, 3, 4 };

    std::size_t upperLimit = 5;
    std::vector<int> subrangeVector = subrangeView(myVect, upperLimit);

    fun(subrangeVector);  // so myVect.at(0) == 1

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

这将在std::vector用作参数的许多不同函数中实现。我不想传递这里讨论的迭代器。假设我无法控制函数fun

c++ reference-type slice stdvector

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

如何使“ days-since-epoch”值与std :: chrono配合使用?

我从一个神奇的gremlin中获得了内存中非负整数值的数组,例如type I。这些中的每一个都代表某个时期以来的天数(在ISO 8601日历中,该时间比0早许多年)。

现在,我想用C ++类包装这些值(基本上是通过指针或重新解释),它们可以与的代码很好地交互std::chrono,或者也许我应该说将它们与通常需要std::chrono时间点和持续时间的代码一起使用。

为此,我最好的做法是什么?注意我不想替换数组中的任何数据,也不想为其他地方的每个现有数据创建新值。

c++ c++-chrono

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

How do I get the current day of week in C++ using date.h?

I am using C++ 14 and am trying to get the current day of week. After some reading I am using date.h by Howard E. Hinnant.

However I am struggling to get a day of the week (encoded as 0 thru 6).

Something like this prints out Thu:

 int main(void)
 {
     date::sys_days t;
     weekday wd{t};
     cout << wd << '\n';
 }
Run Code Online (Sandbox Code Playgroud)

Many answers on this site regarding getting the current day of the week use chrono.

How can …

c++ date dayofweek c++-chrono c++14

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

为什么 libclang 会错误解析带有 .h 前缀的 C++ 标头?

我尝试使用 libclang 解析 C++ 标头,但解析器仅解析类名 - 并将其类型显示为 VarDec1。当文件扩展名从 .h 更改为 .cpp 时,它就可以正常工作。经过几天的搜索找不到答案,有人可以帮我解决这个问题吗?

以下是parser.cpp:

#include <iostream>
#include <clang-c/Index.h>  // This is libclang.
using namespace std;

ostream& operator<<(ostream& stream, const CXString& str)
{
  stream << clang_getCString(str);
  clang_disposeString(str);
  return stream;
}

int main()
{
  CXIndex index = clang_createIndex(0, 0);
  CXTranslationUnit unit = clang_parseTranslationUnit(
    index,
    "tt.h", nullptr, 0,
    nullptr, 0,
    CXTranslationUnit_None);
  if (unit == nullptr)
  {
    cerr << "Unable to parse translation unit. Quitting." << endl;
    exit(-1);
  }

  CXCursor cursor = clang_getTranslationUnitCursor(unit);
  clang_visitChildren(
    cursor, …
Run Code Online (Sandbox Code Playgroud)

c c++ clang clang++ libclang

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

顺序行为中的 Readdir()

int indent = 0;
int listDir(const char* dirname){
    DIR* dir;
    struct dirent* d;
    if(!(dir = opendir(dirname)))
        return -1;
    while((d = readdir(dir)) != NULL){
        if(strcmp(d->d_name, ".") == 0 || strcmp(d->d_name, "..") == 0 ){
            continue;
        }
        else if(d->d_type != DT_DIR){ // Any except folders.
            printf("%*s- %s:%ld\n", indent, "", d->d_name, d->d_ino);
        }
        else if(d->d_type == DT_DIR){ // Folders only
            printf("%*s[%s]\n", indent, "", d->d_name);
            char path[1024];
            snprintf(path, sizeof(path), "%s/%s", dirname, d->d_name);
            indent +=2;
            listDir(path);
            indent -=2;
        }
Run Code Online (Sandbox Code Playgroud)

这个函数工作得很好,但唯一的问题是它输出以下结果作为示例: 上述函数的输出

我需要输出是容器文件夹、文件和文件夹。文件夹应位于列表的末尾。例如,上面的输出应该是:

在此处输入图片说明

c sorting readdir partial-ordering

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

Graphviz 未在子图周围绘制边框

考虑以下 Graphviz 代码:

digraph g1 { 
    compound = true;
    node [shape = box, style=filled, fillcolor=Khaki] a;

    subgraph sg1 {
        node [shape = "", style="", fillcolor=""] b -> c;
        graph [style=solid, penwidth=3];
    }
}
Run Code Online (Sandbox Code Playgroud)

这产生:

在此输入图像描述

为什么我没有得到子图/簇周围的边框?

border graphviz subgraph

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

使用 range-for 循环以相反的顺序迭代向量?

我想以相反的顺序迭代一个向量,我知道我可以通过下面的代码轻松完成

#include<bits/stdc++.h>
using namespace std;
int main()
{
    vector<int> v(10);
    for(auto it=v.rbegin();it!=v.rend();it++)
        cout<<*it<<"";
}
Run Code Online (Sandbox Code Playgroud)

为了向前迭代,我们可以简单地通过下面的代码来完成。

for(auto it:v)
  cout<<it<<" ";
Run Code Online (Sandbox Code Playgroud)

现在的任务是...

是否可以进行类似于for(auto it:v) cout<<it<<" ". 如果是,那么如何?

c++ stl stdvector

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

主 CUDA 上下文何时被运行时 API 销毁?

在关于运行时与驱动程序 API 的讨论中,据说

主要上下文根据需要创建,每个设备每个进程一个,并进行引用计数,然后在不再有对它们的引用时销毁。

什么算作此类参考文献?而且——这是否意味着,通常情况下,主要上下文应该在重复使用后立即被销毁?例如,您获得默认设备 ID,然后启动内核;还剩下什么“参考资料”?当然它不是保存设备 ID 的整数变量......

cuda cuda-context

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