小编Val*_*rio的帖子

在 PyTorch 中使用 None 索引张量

我在 PyTorch 中看到过这种用于索引张量的语法,但不确定它的含义:

v = torch.div(t, n[:, None])
Run Code Online (Sandbox Code Playgroud)

其中vt、 和n是张量。

None这里的“ ”有什么作用呢?我似乎在文档中找不到它。

indexing syntax pytorch tensor

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

Stroustrup并在循环中溢出size_type

我正在阅读Bjarne Stroustrup撰写的"使用C++编程原理和实践",我需要澄清一下我在第25.5.3节中找到的令人惊讶的一点.作者声称,如果我们想迭代一个std::vector,那么使用一个循环变量

for (vector<int>::size_type i = 0; i < v.size(); ++i)
Run Code Online (Sandbox Code Playgroud)

比使用vector类的迭代器安全性更低:

for (vector<int>::iterator p = v.begin(); p != v.end(); ++p)
Run Code Online (Sandbox Code Playgroud)

因为,是无符号类型,i可能会溢出.他声明使用迭代器的循环没有这样的限制.我有点困惑,因为我知道size_type保证足够大以代表最大可能的向量,所以类型的变量size_type永远不会在这样的循环中溢出.

编辑

更具体地说,他提出了一个int在其他两个之前使用类型的循环变量的示例,然后在最后他说:

" size_type保证是无符号的,所以第一个(无符号整数)形式比int上面的版本多一个比特.这可能很重要,但它仍然只给出一个比特的范围(加倍迭代次数)使用迭代器的循环没有这样的限制."

vector<T>::size()归还vector<T>::size_type?我没有看到任何限制.

c++ iterator size-type

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

QT:查找和替换文件中的文本

我需要在文本文件中查找并替换一些文本。我用谷歌搜索并发现最简单的方法是将文件中的所有数据读取到 QStringList,找到并用文本替换精确的行,然后将所有数据写回我的文件。这是最短的路吗?你能提供一些例子吗?UPD1 我的解决方案是:

QString autorun;
QStringList listAuto;
QFile fileAutorun("./autorun.sh");
if(fileAutorun.open(QFile::ReadWrite  |QFile::Text))
{
    while(!fileAutorun.atEnd()) 
    {
        autorun += fileAutorun.readLine();
    }
    listAuto = autorun.split("\n");
    int indexAPP = listAuto.indexOf(QRegExp("*APPLICATION*",Qt::CaseSensitive,QRegExp::Wildcard)); //searching for string with *APPLICATION* wildcard
    listAuto[indexAPP] = *(app); //replacing string on QString* app
    autorun = ""; 
    autorun = listAuto.join("\n"); // from QStringList to QString
    fileAutorun.seek(0);
    QTextStream out(&fileAutorun);
    out << autorun; //writing to the same file
    fileAutorun.close();
}
else
{
    qDebug() << "cannot read the file!";
}
Run Code Online (Sandbox Code Playgroud)

c++ qt text-files

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

C++中带指针参数的函数

我在使用指针理解函数的某些方面时遇到了一些困难.这是我正在运行的代码:

#include <iostream>

using namespace std;

class Item
{
public:

    Item(Item * it)
    {
        data = it->data;
    }

    Item(int d)
    {
        data = d;
    }

    void printData()
    {
        cout << data << endl;
    }

private:
    int data;
};

int main()
{
    Item i1(79);
    Item i2(i1);

    i1.printData();
    i2.printData();
}
Run Code Online (Sandbox Code Playgroud)

这段代码有效,问题是我不明白为什么!Item类的构造函数需要一个指针,但我将一个对象传递给它,而不是指向该对象的指针.如果我通过使用实际传递指针,代码也可以工作:

Item i2(&i1);
Run Code Online (Sandbox Code Playgroud)

那么,&符号是可选的吗?编译器是否认识到我的意思是传递指针而不是实际的对象并自己处理它?我希望在这种情况下出现编译错误.如果我的代码在不应该的时候工作,我会非常沮丧:-)

c++ constructor pointers function ampersand

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