我有一个带有多维数组的类:
可以使用此类创建一个,两个,......,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) 我目前正在尝试对以下列表进行排序:
list_ = [(1, '0101'), (1, '1010'), (1, '101'), (2, '01'), (2, '010'), (2, '10')]
Run Code Online (Sandbox Code Playgroud)
这些是我想要对其进行排序的步骤:
我的尝试:
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)
谢谢你的帮助.
我有一个简单的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) 我正在尝试使用 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
我有这个例子:一个矩阵的类,矩阵的维度作为模板参数给出.
template <std::size_t DIM>
class Matrix {
// ...
};
int main()
{
Matrix<2> m2;
Matrix<4> m4;
m2 = m4;
}
Run Code Online (Sandbox Code Playgroud)
笏做我的赋值操作符都看起来像的改变DIM
的m2
2至4?