小编DaC*_*own的帖子

在Python中使用自定义比较函数对列表进行排序

我知道有几个问题就像这样,但我似乎无法得到他们的工作答案.

我有一个列表列表,50次5个元素.现在我想通过对每个元素应用自定义比较函数来对此列表进行排序.此函数计算列表的适合度,元素应按顺序排序.我创建了两个函数,比较和健身:

def compare(item1, item2):
    return (fitness(item1) < fitness(item2))
Run Code Online (Sandbox Code Playgroud)

def fitness(item):
    return item[0]+item[1]+item[2]+item[3]+item[4]
Run Code Online (Sandbox Code Playgroud)

然后我试着通过以下方式打电话给他

sorted(mylist, cmp=compare)
Run Code Online (Sandbox Code Playgroud)

要么

sorted(mylist, key=fitness)
Run Code Online (Sandbox Code Playgroud)

要么

sorted(mylist, cmp=compare, key=fitness)
Run Code Online (Sandbox Code Playgroud)

要么

sorted(mylist, cmp=lambda x,y: compare(x,y))
Run Code Online (Sandbox Code Playgroud)

我也尝试使用相同的参数list.sort().但无论如何,函数不会将列表作为参数而是一个参数None.我不知道为什么会这样,主要来自C++,这与我的回调函数的任何想法相矛盾.如何使用自定义函数对此列表进行排序?

编辑 我发现了我的错误.在创建原始列表的链中,除了使用返回值之外,一个函数没有返回任何内容.抱歉打扰了

python sorting list callback

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

删除char数组

这个问题关系到这一个.鉴于此代码:

char *p = new char[200];
delete[] p;
Run Code Online (Sandbox Code Playgroud)

如果你p[100] = '\0'在删除p之前设置会发生什么?

我有一些代码,当我试图删除一个非空终止的char数组时,我收到了一个调试错误,这是关于删除未分配的堆内存.它似乎从数组的边界中删除了内存.

c++ memory-management

23
推荐指数
3
解决办法
8万
查看次数

如何使用类型列表

我读到了"现代C++设计"中的类型列表,我将其理解为某种类型的联合.通过在类型列表中放置不同的,不相关的类型,可以使用它一次表示多个类型,而无需继承.我在原始类型的一些简单函数中测试了类型列表,但我无法使它们中的任何一个工作.

有人可以告诉我,如果我对类型列表的解读是正确的,并给出一个简单的现实世界的例子,如何在每天的平均代码中使用类型列表?提前致谢.

顺便说一下,我正在使用Windows和Visual Studio 2005及其编译器.

编辑:我的例子不见了,我在vs中使用沙箱项目来测试这些东西.但它很安静,类似于Dobbs教程中的代码:

void SomeOperation(DocumentItem* p)
{
    if (TextArea* pTextArea = dynamic_cast<TextArea*>(p))
    {
        ... operate on a TextArea object ...
    }
    else if (VectorGraphics* pVectorGraphics =
        dynamic_cast<VectorGraphics*>(p))
    {
        ... operate on a VectorGraphics object ...
    }
    else if (Bitmap* pBitmap = dynamic_cast<Bitmap*>(p))
    {
        ... operate on a Bitmap object ...
    }
    else
    {
        throw "Unknown type passed";
    }
}
Run Code Online (Sandbox Code Playgroud)

这有效,但我没有看到继承能够做到这一点的优势.动态转换不适用于基本类型.是否可以将其用作返回值,如:

typedef Typelist<int, string> mylist
mylist myfunction() {
    if(foo == bar)
        return 5;

    return "five";
}
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio-2005 typelist policy-based-design

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

最后修改的LaTeX命令

是否有LaTeX命令打印实际文档的"上次修改"日期?由于LaTeX项目由多个文件组成,因此该命令理想地打印实际文件的日期,而不是项目的日期.

latex date

12
推荐指数
3
解决办法
9397
查看次数

如何将不同的模板类型放入一个向量中

我想构造一个长度或数量未知的消息.我拿了一个简单的模板

template <typename T> class Argument {
public:
    int size;
    int type;
    T data;
};
Run Code Online (Sandbox Code Playgroud)

并有一些超载

addMessage (int value) {
    Argument<int> *a = new Argument<int>;
    vec.push_back(a);
}
Run Code Online (Sandbox Code Playgroud)

(对于字符串等相同)我尝试将它全部推入一个向量.我试过了

std::vector<Argument* > vec;
std::vector<Argument<typename T>* > vec;
std::vector<Argument<>* > vec;
Run Code Online (Sandbox Code Playgroud)

但这似乎没有任何作用.有没有办法做到这一点?提前致谢.

c++ polymorphism templates

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

无需reinterpret_cast即可读取二进制数据

仅仅因为我在编写读取二进制STL文件的程序之前从未读过二进制文件.我使用ifstream带有char*参数的读取成员.要将我的结构转换为char*,我使用reinterpret_cast.但据我记得每本关于C++的书我读到的都说"不要使用reinterpret_cast,除非你必须".什么是更好的方式读取二进制数据,不一定是直接的,但最后到一个结构,没有reinterpret_cast?

主要功能:

std::ifstream in (cmdline[1].c_str(), std::ios::binary);

in.seekg(80, std::ifstream::beg); //skip header

int numTriangle;
in.read (reinterpret_cast<char*>(&numTriangle), sizeof(int)); //determine number of triangles
//create triangle data type and read data
triangle* t = new triangle();
for (int i = 0; i < numTriangle; ++i)  {
    in.read(reinterpret_cast<char*>(t), triangle::size);
    std::cout << *t;  // there's an opertor<< for triangle
}
delete t;

in.close(); //close file read from
Run Code Online (Sandbox Code Playgroud)

和三角形结构

//attempt to get the right size of a class without structure padding
#pragma pack(push)
#pragma pack(1)

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

c++ binary casting

8
推荐指数
1
解决办法
4573
查看次数

如何使用导出相同函数名的2个库

重复以下问题:C函数冲突


嗨,在我目前的项目中,我必须使用某种接口库.函数名由这个接口给出,这个函数做的是开发人员的选择.据我所知,项目应该使用这个函数,当涉及到编译时,你可以选择lib并使用它来实现功能.我尝试做的是通过包装另一个并在mein函数中调用它来同时使用现有的lib和我的lib:

otherlib:

int function1 (int a) {
// do something
}
Run Code Online (Sandbox Code Playgroud)

MYLIB:

int function1 (int a) {
//my code here
    otherlib::function1(a);
}
Run Code Online (Sandbox Code Playgroud)

问题是我没有访问其他lib,而其他lib没有任何名称空间.我已经试过了

namespace old {
    #include "otherlib.h"
}
Run Code Online (Sandbox Code Playgroud)

然后在我的函数中通过old :: function1调用旧函数.只要它是唯一的头文件,这就可以工作.lib将它的符号输出回全球空间.还有类似的东西

namespace new {
    function1 (int a) {
        ::function1(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

没用.最后但并非最不重要的是我尝试了ifdef和这里建议的定义

但我没有成功.

任何想法如何解决这个问题?提前致谢.

编辑:我既没有访问旧的lib也没有项目的两个库都应该使用.

EDIT2:至少旧的lib是静态的

c c++ ambiguity word-wrap

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

绘制使用VTK设置的多行

有人能指出我如何绘制似乎连接的多条线的正确方向吗?我发现vtkLineSetPoint1SetPoint2功能.然后我找到了vtkPolyLine,但似乎没有任何添加,插入或设置功能.同样的vtkPolyVertex.

是否有一个基本功能允许我只是在其内部数据的末尾推送一些点并简单地渲染它?或者,如果没有这样的功能/对象,那么该怎么办?

在一个相关的主题:我不太喜欢vtk.是否有可视化工具包,可能功能有限,更容易使用?

提前致谢

c++ vtk

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

用作模板参数的指针的类类型

如果将指向用户定义类型的指针作为模板参数传递给模板类,是否可以获取参数的类类型?

template <class T> struct UserType {
    typedef T value_type;
    ...
};

int main () {
    typedef std::vector<UserType<double>*> vecType
    vecType vec;

    vecType::value_type::value_type m; //how to get the double here?

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

c++ templates pointers

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

Python:解析二进制stl文件

使用Python(2.7.1 32位和Windows 7 64)解析二进制STL文件时遇到一些困难.该文件的大小约为450k,但是在解析了~8600之外的244个三角形时,我的解析器突然停止工作,但struct.unpack除外:

Exception unpack需要一个长度为12的字符串参数

文件中的光标位置是第33行,第929行.但该行包含大约3400个字符.所以它似乎不是换行问题.

这是代码:

import struct

normals = []
points = []
triangles = []
bytecount = []

fb = [] # debug list

def unpack (f, sig, l):
    s = f.read (l)
    fb.append(s)
    return struct.unpack(sig, s)

def read_triangle(f):
    n = unpack(f,"<3f", 12)
    p1 = unpack(f,"<3f", 12)
    p2 = unpack(f,"<3f", 12)
    p3 = unpack(f,"<3f", 12)
    b = unpack(f,"<h", 2)

    normals.append(n)
    l = len(points)
    points.append(p1)
    points.append(p2)
    points.append(p3)
    triangles.append((l, l+1, l+2))
    bytecount.append(b[0])


def read_length(f):
    length = struct.unpack("@i", f.read(4)) …
Run Code Online (Sandbox Code Playgroud)

python binaryfiles

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

内部数组的访问元素

鉴于这样的类:

TIntClass = class
private
    myInts : TList<Integer>;
...
end;
Run Code Online (Sandbox Code Playgroud)

如何使用[]运算符访问内部列表的元素,例如

myIntList = TIntClass.Create();
myIntList[5];
Run Code Online (Sandbox Code Playgroud)

提前致谢.

arrays delphi

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

是否可以在网站上打印DOS字符?

我想在预标签的网页上打印某种ASCII"艺术".这些图形使用DOS字符来显示像旧迷宫游戏那样的地图.我没有在HTML特殊字符引用中找到任何内容.有没有办法在HTML中使用这些字符?

提前致谢.

html unicode

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

容器div不包围它的浮动子元素.我怎样才能解决这个问题?

我有一个像这样的XHTML结构:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>Titel</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>

<div id="Seite" class="bgr">
<div id="Titel" class="bgr">
<h1>some titel</h1>
</div>

<div id="Mitte" class="bgr">
<div id="Navigation" class="bgr">
<ul>
<li><a href="link.html" class="aktiv"><img src="text.gif" alt="[Link]" /></a></li>
</ul>
</div>

<div id="Inhalt" class="uebersicht bgr">
Content
</div>
</div>

<div id="Fusszeile" class="bgr">
</div>

</div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

"Titel"和"Fusszeile"都是块元素(display:block;).额外的容器div"Mitte"主要用于保证金/填充和背景图像的原因."导航"和"Inhalt"的CSS如下所示:

div#Navigation {
float: left;
}

div#Inhalt {
margin: 0 0 1em 185px;
padding: …
Run Code Online (Sandbox Code Playgroud)

css xhtml

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