小编Apo*_*ian的帖子

在什么上下文中delete运算符会抛出错误?

在我的链表实现中deleteNode(Node*),删除内部类Node实例的辅助函数通过VS 2015中的本地Windows调试器中的"触发断点"引发运行时错误.我小心地匹配我newdelete运算符.范围/参考是否发挥了我没有意识到的作用?

即使存在逻辑错误clear()并且deleteNode()被传递nullptr,它也不应该抛出错误来删除nullptr,然后分配nullptr给自己吧?删除有什么问题?

class LinkedList {
public:
    LinkedList() : head(nullptr) {}
    ~LinkedList() { clear(); }

    void push_front() {
        head = createNode(head);
    }

    void clear() {
        Node* current_node = head;
        while (current_node != nullptr) {
            Node* next_node = current_node->next; // buffer
            deleteNode(current_node);
            current_node = next_node;
        }
    }

private:    
    struct Node {
        Node(Node* next)
            : next(next) {}
        Node* next;
    };
    Node* head;
    Node* createNode(Node* …
Run Code Online (Sandbox Code Playgroud)

c++ inner-classes delete-operator

4
推荐指数
1
解决办法
3834
查看次数

std :: vector实现是否使用内部数组或链表或其他?

我被告知std :: vector在内部实现上有一个C风格的数组,但这不会否定拥有动态容器的整个目的吗?

那么在向量中插入一个值是否为O(n)运算?或者它是否像链接列表中的O(1)一样?

c++ arrays stl vector time-complexity

3
推荐指数
1
解决办法
735
查看次数

嵌套类中的静态成员是否具有封闭类的静态持续时间?

如果我有嵌套类,并且这些嵌套类具有静态成员,那些成员对于封闭类仍然是静态的吗?例如,如果我有

class Enclosing {
public:
    Enclosing();
private:
    class Nested {
    public:
        Nested();
    private:
        static int thing;
    };
};
Run Code Online (Sandbox Code Playgroud)

如果我做

auto A = Enclosing();
auto B = Enclosing();
Run Code Online (Sandbox Code Playgroud)

愿意A并且B能够拥有不同的价值观thing吗?

c++ static-members inner-classes

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

EKS Pod S3 访问被拒绝

我正在尝试创建一个 EKS pod 来用作 mlflow 的服务。我遇到的问题是我无法连接到 s3 来存储 mlflow 运行工件。kubectl exec -it <pod_name> -- /bin/bash我也尝试使用并设置 aws 凭证连接到 pod 。执行此操作时,我可以 ls s3 存储桶。

但是,当我尝试将 mlflow 工件保存到同一 s3 位置时,出现以下错误:

An error occurred (AccessDenied) when calling the AssumeRoleWithWebIdentity operation: Not authorized to perform sts:AssumeRoleWithWebIdentity
Run Code Online (Sandbox Code Playgroud)

造成这种情况的问题是什么?是否需要使用 EKS pod 或类似的东西设置 IAM?

amazon-s3 amazon-iam amazon-eks mlflow

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

使用双链表实现std :: stack吗?

我曾经有一位教授告诉我,这std::stack通常是使用双链表实现的,如果您只需要访问顶部,这将是多余的.

他的结论是用一个std::vector或一个链表实现的用户定义的堆栈结构可以节省内存空间.

无论哪种方式,我都可能使用STL版本(没有浪费精力),但std::stack真的浪费了这样的记忆吗?

c++ stack stl linked-list doubly-linked-list

0
推荐指数
1
解决办法
158
查看次数

是否有没有赋值的增量运算符?

这真的是一个c ++语言问题.我很想知道是否存在任何此类运算符,或者正在开发或已弃用.

我想知道是否有一种方法可以使用增量运算符而不更改其值.

我知道这++var相当于var += 1赋值和表达式将评估为var + 1(如果它是前缀).

这可能是轻浮的,但是当我有条件的时候

if (var + 1 == SOME_CONST) {}
Run Code Online (Sandbox Code Playgroud)

我想写得更像

if (++var == SOME_CONST) {} //not what I want
Run Code Online (Sandbox Code Playgroud)

但是没有改变var的值:

int varDummy = var;
if (++varDummy == SOME_CONST) {}

// Now I want (varDummy == var) to evaluate true, so I wouldn't need varDummy
Run Code Online (Sandbox Code Playgroud)

这种行为有可能吗?当然这是不重要的,但我只是在我必须使用数字文字时畏缩.而且我不希望运算符重载,因为在其他情况下我希望递增/递减运算符正常运行...

c++ increment decrement

-1
推荐指数
1
解决办法
511
查看次数