小编Mar*_*per的帖子

多维数组:运算符重载

我有一个带有多维数组的类:

  • 可以使用此类创建一个,两个,......,n维数组

  • 如果数组有n个维度,我想用n operator[]来获取一个对象:

例:

A a({2,2,2,2}]; 
a[0][1][1][0] = 5;
Run Code Online (Sandbox Code Playgroud)

但数组不是指针的向量,导致其他向量等...

所以我希望operator []返回一个类对象,直到最后一个维度,然后返回一个整数

这是一个强烈简化的代码,但它显示了我的问题:

我收到的错误: "[Error] cannot convert 'A::B' to 'int' in initialization"

#include <cstddef>     // nullptr_t, ptrdiff_t, size_t
#include <iostream>    // cin, cout...

class A {
    private:
        static int* a;
    public:
        static int dimensions;
        A(int i=0) { 
            dimensions = i;
            a = new int[5];
            for(int j=0; j<5; j++) a[j]=j; 
        };

        class B{
            public:
                B operator[](std::ptrdiff_t);
        };
        class C: public B{
            public:
                int& operator[](std::ptrdiff_t);
        };

        B operator[](std::ptrdiff_t);
};

//int …
Run Code Online (Sandbox Code Playgroud)

c++ arrays operator-overloading multidimensional-array

7
推荐指数
1
解决办法
1064
查看次数

对具有多个条件的元组列表进行排序

我目前正在尝试对以下列表进行排序:

list_ = [(1, '0101'), (1, '1010'), (1, '101'), (2, '01'), (2, '010'), (2, '10')]
Run Code Online (Sandbox Code Playgroud)

这些是我想要对其进行排序的步骤:

  1. 按元组的第一个元素的值对列表进行排序
  2. 接下来,按照元组的第二个元素的长度(而不是值,长度!)对列表进行排序.步骤1结束后.
  3. 接下来,按照步骤1和步骤2结束后元组的第二个元素的值对列表进行排序.

我的尝试:

sorted_by_length = sorted(list_, key=len x:x[1])
Run Code Online (Sandbox Code Playgroud)

但是,我收到了关于x后的语法错误key= len.在这种情况下我应该使用的正确变量是什么?

正确的排序列表应该是:

sorted_by_length = [(1, '101'), (1, '0101'), (1, '1010'), (2, '01'), (2, '10'), (2, '010')]
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

python sorting tuples list

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

Makefile - Erro:文件被截断

我有一个简单的Makefile:

CC=g++

CFLAGS= -Wall -std=c++11 -M -MF dependencyFileName.d -c

objects = Table.o LimitedTable.o aDimension.o test.o

edit: $(objects)
    g++ -o edit $(objects)

test.o: LimitedTable.o Table.o aDimension.o test.cpp
    $(CC) $(CFLAGS) test.cpp -o test.o

LimitedTable.o: LimitedTable.cpp LimitedTable.hpp Table.o aDimension.o
    $(CC) $(CFLAGS) LimitedTable.cpp -o LimitedTable.o

aDimension.o: aDimension.cpp aDimension.cpp Table.o
    $(CC) $(CFLAGS) aDimension.cpp -o aDimension.o

Table.o: Table.cpp Table.hpp
    $(CC) $(CFLAGS) Table.cpp -o Table.o

clean:
    rm -f *.o
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

marius@marius-Lenovo-Y50-70 ~/Documents $ make clean
rm -f *.o
marius@marius-Lenovo-Y50-70 ~/Documents $ make edit
g++ -Wall -std=c++11 -M …
Run Code Online (Sandbox Code Playgroud)

c++ makefile g++

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

Visual Studio C++ 远程 linux 调试添加链接器选项

我正在尝试使用 boost 库在 C++ 中开发一个简单的程序。我使用 Visual Studio 2017 和 ubuntu 的远程 bash shell 进行编译和调试。

我在 ubuntu 上安装了 gdb、gdbserver、所有编译器和 boost 库。

没有 boost 的简单程序直接从 Visual Studio 中的 shell 编译和运行没有问题!

当我使用以下命令直接从 ubuntu bash 编译以下程序时:g++ test.cpp -std=c++11 -lboost_program_options -o t它也编译并运行!

#include <boost/program_options.hpp>
#include <iostream>

using namespace boost::program_options;

int main(int argc, const char *argv[])
{
    try
    {
        options_description desc{ "Options" };
        desc.add_options()
            ("help,h", "Help screen");

        variables_map vm;
        store(parse_command_line(argc, argv, desc), vm);
        notify(vm);

        if (vm.count("help"))
            std::cout << desc << '\n';

    }
    catch (const …
Run Code Online (Sandbox Code Playgroud)

ubuntu boost remote-debugging visual-studio boost-program-options

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

模板类的赋值运算符

我有这个例子:一个矩阵的类,矩阵的维度作为模板参数给出.

template <std::size_t DIM>
class Matrix {
   // ...
};

int main()
{
  Matrix<2> m2;
  Matrix<4> m4;

  m2 = m4;
}
Run Code Online (Sandbox Code Playgroud)

笏做我的赋值操作符都看起来像的改变DIMm22至4?

c++ templates assignment-operator

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