小编bla*_*eep的帖子

C ++ Lambda语法

我有一个搜索迭代器向量的函数,如果迭代器的名称与作为参数传递的字符串匹配,则返回迭代器。

koalaGraph::PVertex lookUpByName(std::string Name, std::vector<koalaGraph::PVertex>& Vertices) {

    for (size_t i = 0; i < Vertices.size(); i++) {

        if(Vertices[i]->info.name == Name) 
            return Vertices[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我如何将其实现为lambda,以将其与结合使用std::find_if

我正在尝试:

std::vector<koalaGraph::PVertex> V;
std::string Name;
std::find_if(V.begin(), V.end(), [&Name]() {return Name == V->info.name;})
Run Code Online (Sandbox Code Playgroud)

但是它说 V

除非在捕获列表中,否则不能在lambda主体中引用封闭函数局部变量。

c++ lambda

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

如何正确处理函数是否退出而不会引起返回错误

我有一个搜索向量的函数,如果找到该项目,则将其返回。但我想知道最好的软件方法来处理(如果找不到)。

我创建了一个函数,可以返回-1或类似的东西,但返回类型不匹配。

koalaGraph::PVertex Koala::lookUpVertexbyName(const std::string&vertexName, const std::vector<koalaGraph::PVertex>& koalaVertices) {

    for (size_t i = 0; i < koalaVertices.size(); i++) {

        if(koalaVertices[i]->info.name == vertexName) 
            return koalaVertices[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

如果遇到要搜索的项目不在矢量中的情况,则程序将退出。

c++

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

Tensorflow 量子化 - 零点是什么意思

我正在尝试了解张量流中的量化,并且正在遵循本教程。

\n\n

https://heartbeat.fritz.ai/8-bit-quantization-and-tensorflow-lite-speeding-up-mobile-inference-with-low- precision-a882dfcafbbd

\n\n

在教程中它说,量化方程是:

\n\n

在此输入图像描述

\n\n
    \n
  • r 是实际值(通常是 float32)
  • \n
  • q 是 B 位整数(uint8、uint32 等)的量化表示
  • \n
  • S (float32) 和 z (uint) 是我们缩放和移动数轴的因子。z 是量化的 \xe2\x80\x98zero-point\xe2\x80\x99 ,它将始终精确地映射回 0.f。
  • \n
\n\n

我正在努力理解零点的含义,希望有人能用一个例子来解释它?

\n

quantization tensorflow

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

C ++可以使用移动语义将数据从一个向量移动到另一个向量

下面的代码将数据从一个向量复制到另一个向量。如果向量很大,那么我猜这很昂贵。是否可以在此处使用移动语义将数据从一个向量复制到另一个向量?

std::vector<double> newData(Shape.Size(), 0);
std::vector<double> oldData = a->getData();
std::copy(oldData.begin(), oldData.end(), newData.begin());
Run Code Online (Sandbox Code Playgroud)

c++ vector move-semantics c++11

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

类的C ++赋值运算符包含唯一的指针成员变量

我了解如果我的类具有智能的唯一指针,则无法将该类分配给另一个实例,因为不能复制唯一指针。我知道我可以使唯一指针成为共享指针,这样就可以解决问题。但是,如果我不想共享指针的所有权怎么办?是否可以创建一个赋值运算符来移动唯一指针并复制其他变量?

我读过您可以std::move用来转让所有权。

#include <iostream>
#include <memory> 

struct GraphStructure { };

class test {

        int a;
        std::vector<int> vector;
        std::unique_ptr<GraphStructure> Graph_; 
 };

 int main () {

     test t1;
     auto t2 = t1;
 }
Run Code Online (Sandbox Code Playgroud)

c++ unique-ptr assignment-operator

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

了解C ++中的const_cast

我想了解const_cast

在下面的示例中,items_是一个私有成员变量。

方法getItems()是一种const方法,这意味着它不能修改成员变量items_

getItems()返回一个const vector引用,这意味着您不能修改成员变量items_

我的问题是,const_cast在这里有必要吗?我不这样认为,因为我不需要放弃常数性?

#include <iostream>

class test {  
  std::vector<Item> items_;
public:
  const std::vector<Item>& getItems() const;
};

const std::vector<mv::Item>& mv::Workloads::getItems() const
{
  return const_cast<std::vector<Item>&>(items_);
}
Run Code Online (Sandbox Code Playgroud)

c++ casting

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

C++ operator() 重载

有人能解释一下这段代码的作用吗?

struct EnumClass
    {
        template <typename T>
        std::size_t operator()(T t) const
        {
            return static_cast<std::size_t>(t);
        }
    };
Run Code Online (Sandbox Code Playgroud)

c++

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