当前位置: 首页 > 知识库问答 >
问题:

升压变量的矢量

淳于飞鸾
2023-03-14

我试着用升压::变体

std::vector<boost::variant<mesh::Entity&, mesh::Vertex, mesh::Edge> > 
    xField::getZeros(const mesh::Region& s, char *EntityS) const
{
//Vertex  
  if( EntityS == "V" )
  {
    std::vector<mesh::Vertex> zeros;
    for(Region::vertexIterator itv = s.beginVertex(); 
        itv != s.endVertex(); ++itv )
    {
      if( abs(getVal(*itv)) < 1.e-12 )      
      zeros.push_back(*itv);
    }
      return zeros;    
  }
 else if ..

但我收到错误:错误:从'std::向量'转换为非标量类型'std::向量

编辑:

zeroVector xField::getZeros(const mesh::Region& s, char *EntityS) const
{
//Vertex  
  if( EntityS == "V" )
  {
    zeroVector zeros;
    for(Region::vertexIterator itv = s.beginVertex(); itv != s.endVertex(); ++itv )
    {
      if( abs(getVal(*itv)) < 1.e-12 )      
      zeros.push_back( zeroVariant(*itv) );
    }
      return zeros;

我在。h文件

typedef boost::variant<mesh::Entity&, mesh::Vertex, mesh::Edge> zeroVariant;
typedef std::vector<zeroVariant> zeroVector;

现在我有以下错误:

/softs/boost/1 . 53 . 0/64/gcc/4 . 5 . 1/include/boost/detail/reference _ content . HPP:在成员函数' void boost::detail::variant::assign _ storage::internal _ visit(T

提前感谢!!!!!

共有1个答案

邢俊悟
2023-03-14

你需要改变“零”的类型——它不能从< code>std::vector转换

typedef boost::variant<mesh::Entity&, mesh::Vertex, mesh::Edge> EvVariant;
typedef std::vector<EvVariant> EvVariantVector;

EvVariantVector xField::getZeros(const mesh::Region& s, char *EntityS) const
{
//Vertex  
  if( EntityS == "V" ) // This line is probably a bug!
  {
    EvVariantVector zeros; // Use the return type here!
    for(Region::vertexIterator itv = s.beginVertex(); itv != s.endVertex(); ++itv )
    {
      if( abs(getVal(*itv)) < 1.e-12 )      
      zeros.push_back(EvVariant(*itv));
    }
      return zeros;    
  }
 else if ..

另外,如果(EntityS==“V”)行不正确,可能会失败。使用strcmp或只比较字符串的第一个字符。

 类似资料:
  • 矢量或者说向量,可以通过2~4个分量表示一个向量,比如通过vec3(1,0,0)表示三维空间中一个沿着x轴正方向的三维方向向量,如果你有高中数学的基础,应该对向量有一定的了解,对于三维坐标的相关几何运算也有一定的概念。 关键字 数据类型 vec2 二维向量,具有xy两个分量,分量是浮点数 vec3 三维向量 ,具有xyz三个分量,分量是浮点数 vec4 四维向量 ,具有xyzw四个分量,分量是浮点

  • Vector是由连续整数索引的值的集合。 使用Clojure中的矢量方法创建矢量。 例子 (Example) 以下是在Clojure中创建矢量的示例。 (ns clojure.examples.example (:require [clojure.set :as set]) (:gen-class)) (defn example [] (println (vector 1 2 3

  • 变量提升 先说三句总结性的话: let 的「创建」过程被提升了,但是初始化没有提升。 var 的「创建」和「初始化」都被提升了。 function 的「创建」「初始化」和「赋值」都被提升了。 变量提升的规律 在进入一个执行上下文后,先把 var 和 function 声明的变量前置,再去顺序执行代码。 PS:作用域分为全局作用域和函数作用域,用var声明的变量,只在自己所在的所用域有效。 我们举例

  • 结构体定义、常量和构造函数 定义: typedef struct cpVect{ cpFloat x, y; } cpVect 零向量常量: static const cpVect cpvzero = {0.0f,0.0f}; 创建新结构体所用的便捷的构造函数: cpVect cpv(const cpFloat x, const cpFloat y)

  • 高德POI抓取 功能介绍        POI全称为Point of Interest,即兴趣点。在LSV的扩展插件中可以使用“高德POI抓取”功能来提取所选或者所绘制区域内中的所有包含自定义关键词的POI信息。 具体操作        在下载菜单中找到“高德POI抓取”功能,点击进入。        在绘制或选择所需提取POI的面后开始对关键词、POI类型进行设置,并且输入使用的高德KEY(详细

  • 问题内容: 我有一个清单: 有没有更多的pythonic方式可以解压缩此值,例如: 问题答案: 像这样吗? 另外,为了记录在案,请注意您的示例将因IndexError而失败(Python的列表基于零)。 编辑:以上说明是在固定OP示例之前编写的…