小编Pet*_*ood的帖子

释放后分配指针

我正在查看"Programming Interviews Exposed"一书中的以下代码:

bool deleteStack( Element **stack ){
      Element *next;
      while( *stack ){
            next = (*stack)->next;
            free( *stack );
            *stack = next;
      }
      return true;
}
Run Code Online (Sandbox Code Playgroud)

我不熟悉C++或C,所以这可能是一个愚蠢的问题,但是在释放它之后不会给指针分配一些东西导致问题?

c c++ pointers

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

如何将字符串向右移动并在python中将其反转?

将单词向右移动然后将其反转.

您应该向右移动一个单词并将其反转然后返回如下:

>>> shift_reverse('Introduction to Computer Programming')
gnimmargorP noitcudortnI ot retupmoC
Run Code Online (Sandbox Code Playgroud)

我尝试使用这种方法找到上面的答案但它似乎没有工作请帮助:(

s= "I Me You"
def shift_reverse(s):
    l= s.split()
    new_str= ' '.join(l[-1:] + l[:-1])
    new_str = new_str[::-1]
    return (new_str)

print (shift_reverse(s))
Run Code Online (Sandbox Code Playgroud)

但我得到的印刷品是

[evaluate untitled-3.py]
eM I uoY
Run Code Online (Sandbox Code Playgroud)

python

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

奇怪的内联分配

我在Python(2和3)中遇到这种奇怪的行为:

>>> a = [1, 2]
>>> a[a.index(1)], a[a.index(2)] = 2, 1
Run Code Online (Sandbox Code Playgroud)

这导致:

>>> a
[1, 2]
Run Code Online (Sandbox Code Playgroud)

但如果你写

>>> a = [1, 2]
>>> a[a.index(1)], a[a.index(2)] = x, y
Run Code Online (Sandbox Code Playgroud)

其中x, y != 2, 1(可以是1, 1,2, 2,3, 5等),这将导致:

>>> a == [x, y]
True
Run Code Online (Sandbox Code Playgroud)

正如人们所料.为什么不a[a.index(1)], a[a.index(2)] = 2, 1产生结果a == [2, 1]

>>> a == [2, 1]
False
Run Code Online (Sandbox Code Playgroud)

python tuples variable-assignment

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

使用一个函数生成多个列表

我正在为学校做一个小项目,我必须将quicksort与python的内置排序功能进行比较.我实际上已经陷入困境,我必须用数字填充多个列表.

def genlist():
    x = []
    while len(x) < 100
        y = randint(1,9999)
        x += [y]
    return x
Run Code Online (Sandbox Code Playgroud)

这是我的代码.此代码有效,但它只创建一个列表.但是我的目标是创建具有不同长度的多个列表.

试过这样的事情:

def genlist():
    x,y,z = []
    while len(x,y,z) < 100, 1000, 10
        y = randint(1,9999)
        x += [y]
    return x
Run Code Online (Sandbox Code Playgroud)

但是显然不起作用D:

python list

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

如何在 CEST 和 UTC 时区之间转换日期时间对象

我不想使用该pytz库,因为我正在处理的项目需要文书工作来引入依赖项。如果我可以在没有第三方库的情况下实现这一点,我会更开心。

当日期处于夏令时时,我无法在 CET 和 UTC 之间转换日期。这与我期望的不同一个小时:

>>> print from_cet_to_utc(year=2017, month=7, day=24, hour=10, minute=30)
2017-07-24T09:30Z

2017-07-24T08:30Z  # expected
Run Code Online (Sandbox Code Playgroud)

CET 比 UTC 早 1 小时,夏季比 UTC 早 2 小时。因此,我预计仲夏的中欧 10:30 实际上是 UTC 时间 8:30。

功能是:

from datetime import datetime, tzinfo, timedelta

def from_cet_to_utc(year, month, day, hour, minute):
    cet = datetime(year, month, day, hour, minute, tzinfo=CET())
    utc = cet.astimezone(tz=UTC())
    return '{:%Y-%m-%d:T%H:%MZ}'.format(utc)
Run Code Online (Sandbox Code Playgroud)

我使用两个时区信息对象:

class CET(tzinfo):
    def utcoffset(self, dt):
        return timedelta(hours=1)

    def dst(self, dt):
        return timedelta(hours=2)

class UTC(tzinfo):
    def utcoffset(self, dt):
        return timedelta(0) …
Run Code Online (Sandbox Code Playgroud)

python timezone datetime dst

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

C++ map <K,T>初始化

我正在阅读"Ivor Horton的开始编程Visual C++ 2010",我在第10章 - 标准模板库.我的问题在于地图容器map<Person, string> mapname.这本书向我展示了很多添加元素的方法,比如稍后pair<K, T>使用和使用make_pair()函数,以及mapname.insert(pair).但突然他引入了以下代码中使用的元素添加技术:

int main()
{
    std::map<string, int> words
    cout << "Enter some text and press Enter followed by Ctrl+Z then Enter to end:"
        << endl << endl;

    std::istream_iterator<string> begin(cin);
    std::istream_iterator<string> end;

    while(being != end)   // iterate over words in the stream
        //PROBLEM WITH THIS LINE:
        words[*begin++]++;  // Increment and store a word count

    //there are still more but irrelevant to this question)
}
Run Code Online (Sandbox Code Playgroud)

指示的行是我的问题.我明白这words …

c++ stl map variable-assignment

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

如何从源向量<>构建搜索结果的向量<>?

考虑这个例子:

std::vector<Student> students;
//poplate students from a data source
std::vector<Student> searched(students.size());
auto s = std::copy_if(students.begin(), students.end(), searched.begin(),
    [](const Student &stud) {
        return stud.getFirstName().find("an") != std::string::npos;
    });
searched.resize(std::distance(searched.begin(), s));
Run Code Online (Sandbox Code Playgroud)

我有以下问题:

  1. 为搜索到的向量等于初始向量分配内存是否可以?可能有500个不小的对象,也许没有一个满足搜索条件?还有其他方法吗?
  2. 当复制到搜索到的矢量时,它被称为复制赋值操作符,并且......显然是复制.如果满足搜索条件的500个对象400怎么办?不只是记忆浪费?

我是一个c ++ noob所以我可能会说一些愚蠢的话.我不明白为什么要永远使用vector<T>其中T的一个对象.我总是会用vector<shared_ptr<T>>.如果T是像int这样的原始类型,我猜它有点直接使用vector<T>.

我考虑过这个例子,因为我觉得它很通用,你总是需要从数据库或xml文件或任何其他来源中提取一些数据.你有没有vector<T>在你的数据访问层或vector<shared_ptr<T>>

c++ c++11

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

将整数连接到字符串

我试图在visual studio 2008中保存一系列图像,所有图像都带有"Image"的前缀.唯一的区别因素应该是它们的数量.例如,如果我要保存10张图像,那么情况就应该如此

i=1;
while(i<10)
{
cvSaveImage("G:/OpenCV/Results/Imagei.jpg",img2);
i++
//"i" is gonna be different every time
}
Run Code Online (Sandbox Code Playgroud)

所以我需要将整数与字符串连接起来...期待答案......

c++

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

通过重复计算列出理解

我目前正在玩Python中的Project Euler问题53.解决方案很简单,但涉及以下列表理解:

[scipy.misc.comb(n, r, exact=True)
 for n in range(1,maxn+1)
 for r in range(0,n+1)
 if scipy.misc.comb(n, r, exact=True) > threshold]
Run Code Online (Sandbox Code Playgroud)

我关心的是scipy.misc.comb()函数每次迭代都会被调用两次.有没有办法用某种参考替换它的一个或另一个出现; 或者是解释器足够智能,以实现两个实例将评估相同的东西?

python list-comprehension

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

如何使用dict ["key"]中的值替换在Strings中用{key}标记的关键字

我想写一个带字符串和字典的方法.该方法应扫描字符串并将{word}内的每个单词替换为dic ["word"]的值.

例:

s = "Hello my name is {name} and I like {thing}"
dic = {"name": "Mike", "thing": "Plains"}

def rep(s, dic):
   return "Hello my name is Mike and I like Plains"
Run Code Online (Sandbox Code Playgroud)

我的意思是它是一个简单的问题,易于解决,但我搜索了很好的python方式.

python string

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