小编Sau*_*ahu的帖子

C++编译器17

有没有我可以运行C++ 17代码的在线地方,因为我想学习C++ 17 的新功能.我尝试在内置的 Coliru编译器GCC 6.1 C++ 17 上运行它.但遗憾的是没有编译.

C++ 17的编译器还没有出来,我在互联网上到处搜索它?

c++17

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

使用表达式初始化char*不起作用

以下代码生成错误的输出:

string my_string="My_First_Text";
char * my_pointer=(char *)(my_string+"My_Second_Text").c_str();
Run Code Online (Sandbox Code Playgroud)

为什么?在我初始化时my_pointer,我认为my_pointer=new char[100]不需要.如果这个假设不正确,为什么呢?

c++ string pointers temporary-objects

6
推荐指数
1
解决办法
322
查看次数

如何在C++中声明和初始化2d int向量?

我正在尝试做类似的事情:

#include <iostream>
#include <vector>
#include <ctime>

class Clickomania
{
    public:
        Clickomania();
        std::vector<std::vector<int> > board;
};

Clickomania::Clickomania()
    : board(12, std::vector<int>(8,0))             <<<<<<<
{

    srand((unsigned)time(0));

    for(int i = 0; i < 12; i++)
    {
        for(int j = 0; j < 8; j++)
        {
            int color = (rand() % 6) + 1;
            board[i][j] = color;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,显然我不能用这种方式初始化矢量的"板"矢量.

如何创建二维矢量类型的公共成员并正确初始化它?

c++

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

超载左移操作员

我已经研究过并发现当你想为cout重载输出流操作符时,那么正确的方法是这样做:

std::ostream& operator<<(std::ostream& os, const T& obj)
Run Code Online (Sandbox Code Playgroud)

这个函数必须在类之外定义,因为这里发生的是操作符<<实际上是ostream中定义的友元函数,你正在使用它.但是,问题是,这个函数究竟是如何在ostream中定义的?由于此函数需要2个参数,而第二个参数是用户定义的,因此他们无法猜出将要发生什么.

特定类的重载应如下所示:

std::ostream& operator<<(std::ostream& os, const MyClass& obj)
Run Code Online (Sandbox Code Playgroud)

编译器/库如何为第二个参数采用泛型定义,特别是因为在C++中没有泛型类(如Java中的Object)这样的东西?

c++ operator-overloading argument-dependent-lookup

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

将派生类的unique_ptr添加到基类unique_ptr的向量中

我有一个unique_ptr,我想添加到vector>.

unique_ptr<Derived> derivedObject;
vector<unique_ptr<Base>> vec;

vec.push_back(derivedObject) // Invalid arguments
Run Code Online (Sandbox Code Playgroud)

c++ inheritance vector unique-ptr move-semantics

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

如何使用Java实现二叉树的最低共同祖先?

我遇到了以下实现并花了一些时间,但仍然无法掌握这个想法.有人可以逐行解释它在做什么吗?我只是不明白在什么时候它可以决定一个节点是一个祖先.

谢谢

public class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if(root == null || root == p || root == q)  return root;
        TreeNode left = lowestCommonAncestor(root.left, p, q);
        TreeNode right = lowestCommonAncestor(root.right, p, q);
        if(left != null && right != null)   return root;
        return left != null ? left : right;
    }
}
Run Code Online (Sandbox Code Playgroud)

java algorithm binary-tree lowest-common-ancestor

5
推荐指数
1
解决办法
526
查看次数

为什么连续的vector :: push_back导致不同数量的构造函数调用?

class base
{
    private:
            int k;
    public:
            base(const base& b){ this->k = b.k; cout<<"  c-ctor "<<endl; }
            base(int a = 10){ k = a; }

            ~base(){cout << "destructor called\n";}
};

int main()
{
    base b, b1(2);
    vector<base> m;
    cout << "first pushback" <<endl;
    m.push_back(b);
    cout << "2nd pushback" <<endl;
    m.push_back(b1);
    cout << "3rd pushback" <<endl;
    m.push_back(b1);
    cout << "4th pushback" <<endl;
    m.push_back(b);
    cout << "5th pushback" <<endl;
    m.push_back(b);
    cout<<" =============================================== "<<endl;

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

输出:

first pushback
  c-ctor 
2nd pushback …
Run Code Online (Sandbox Code Playgroud)

c++ destructor vector copy-constructor

5
推荐指数
1
解决办法
296
查看次数

将隐藏列表从一个克隆或文件夹复制到另一个

我有两个相同远程存储库的 git 克隆。我在克隆 A 中创建了几个隐藏,现在想将这些隐藏移动到克隆 B。

[克隆 A] ---- 藏匿 ---> [克隆 B]

我能想到的一种解决方法是为每个存储创建分支,并通过克隆 A 将该分支推送到远程,然后将这些分支拉入克隆 B。但这不是我愿意做的。

任何人都可以提出任何更简单,更清洁的方法(例如复制)吗?

git github git-stash

5
推荐指数
1
解决办法
803
查看次数

在C++中动态更改Object的基类

我有两个类Sensor1和Sensor2继承自Sensor类.我正在创建类Camera,基于运行时的某些条件,基类应该是Sensor1或Sensor2.可能吗?

一种方法是为Sensor in Camera创建指针成员,然后分配给Sensor1或Sensor2(基于条件),在这种情况下,对于Sensor的所有方法,我需要在Camera(setResolution和changeMode)中创建方法并调用相应的方法(我想避免)

class Sensor {
 public:
       Sensor(){}
       ~Sensor(){}
       void setResolution(int w, int h) {};
       void changeMode(int mode) {};
}

class Sensor1: public Sensor {
  public:
       Sensor1(){}
       ~Sensor1(){}
       void setResolution(int w, int h) {\** change based on sensor **\}
       void changeMode(int mode) {\** sensor specific implementation **\}
}

class Sensor2: public Sensor {
   public:
       Sensor2(){}
       ~Sensor2(){}
       void setResolution(int w, int h) {\** change based on sensor **\}
       void changeMode(int mode) {\** sensor specific implementation **\}

class Camera: public Sensor …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance design-patterns

5
推荐指数
1
解决办法
259
查看次数

pandas中的reset_index()有什么用?

在阅读这篇文章时,我看到了这样的说法。

order_total = df.groupby('order')["ext price"].sum().rename("Order_Total").reset_index()
Run Code Online (Sandbox Code Playgroud)

除了reset_index()方法调用之外,其他一切我都清楚。我的问题是,如果我不reset_index()考虑以下给定的顺序打电话,会发生什么?

order_total = df.groupby('order')["ext price"].sum().rename("Order_Total").reset_index()
df_1 = df.merge(order_total)
df_1["Percent_of_Order"] = df_1["ext price"] / df_1["Order_Total"]
Run Code Online (Sandbox Code Playgroud)

我试图从https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.reset_index.html了解此方法,但无法理解重置索引是什么意思一个数据框。

python pandas

5
推荐指数
3
解决办法
6328
查看次数