小编ber*_*ndh的帖子

c ++ vector最后一个元素字段

我有一个结构矢量vec.这种结构具有元素int a,int b,int c.我想从向量中的最后一个结构赋予一些int var元素c.请问您能提供这个简单的解决方案吗?我要像这样排成一行:

var = vec.end().c;
Run Code Online (Sandbox Code Playgroud)

c++ structure vector

43
推荐指数
4
解决办法
7万
查看次数

c ++中的multiset

我已经在另一个问题中询问了multiset中的问题,但现在我发现我需要一个体面的理解,并且在互联网上找不到更复杂的例子.

你可以解释一下,也许是示例,multiset<A,B>A和B的作用和功能是什么,还有什么可以省略?我可以将A或B放到某个变量中吗?我真的很感激一些简短的例子或参考,

c++ stl multiset

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

如何在matlab中删除开头和结尾的空格?

我有一个由细胞组成的结构.我想删除每个单元格的开头和最后的所有空格,我想保留单元格中文本之间的所有空格.所以,如果我有

s = '   bbb b bbbb   ' 
Run Code Online (Sandbox Code Playgroud)

我想获得

s = 'bbb b bbbb' 
Run Code Online (Sandbox Code Playgroud)

我想将此方法应用于此结构中的未知数量的单元格(例如2x3),可能使用循环.有谁知道怎么做?我失败了regexp.

matlab cell removing-whitespace

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

c ++ map/set iterator not dereferencable

我想问你一个提示,因为我是初学者,在互联网上找不到合适的答案.我收到此错误: debug assertion failed - map/set iterator not dereferencable 在看起来像这样的行:

pointA = active->pointNext(timeNext);
Run Code Online (Sandbox Code Playgroud)

使用函数pointNext(),因为我看到一切正常,有什么问题是活跃的,我有:

active = setS.data.end();
Run Code Online (Sandbox Code Playgroud)

更多信息:

activemultiset <classA,classB :: classC> :: const_iterator

setS具有:setS.Q,setS.W,setS.TsetS.data,其中setS.data在方括号内有0.当我在.cpp文件中有multiset迭代器声明时,在调试期间我无法进入以查看活动内部是什么,当它在.h文件中时,我可以.

在.cpp中我无法进入活动状态,因此可以想象它就像指针(迭代器)不能解除引用,因为内部是错误的.如果它是空的,即如果setS.data为空,该怎么办?或者里面有垃圾吗?

我知道之前在linux下运行的东西,是否有一些我必须改变才能在Windows上运行的功能?例如,将一些模板参数更改为仅一个?(正确地将setS.data归活动,因为我不确定 - 我是否正确地做到了?

对于这个相当混乱的帖子感到抱歉,我想加上我的猜测,如果他们错了,就会忽视他们.如果这里的某些内容不清楚或缺乏某些信息,我很乐意添加它.你能否告诉我什么原因可能导致我得到的失修错误,我应该在哪里寻找它?因为我被困住了,不知道该怎么办.

任何帮助非常感谢,谢谢!

c++ iterator multiset

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

增加一个迭代器 C++

我的问题如下:我使用迭代器,我想将每个元素与下一个元素进行比较。原型如下所示,如何增加迭代器以进行比较?另外,我怎样才能为这种情况设置适当的条件?我的意思是如何指向最后一个元素,而不是像 end() 函数一样指向最后一个元素之后的下一个元素:

std::vector<T>::const_iterator it;
std::vector<T>::const_iterator it2;
for (it = set.begin(), it != set.end(); it++)
{
  // some things happen
  if ( final == it )
  {
     if ( it != set.end()-1 ) // how to write properly condition?
     {
        it2 = it + 1; //how to assign the next here?
        if (...)//some condition
        {
          if ( it->func1() - it2->func1()) < 20 ) //actual comparison of two consecutive element values
            // do something
        }
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

c++ iterator increment

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

删除c ++向量中的字段

我无法正确掌握这个想法和程序(我是初学者):我有一个向量.Vector让我们说元素:fieldA,fieldB,fieldC.因此,有了这些向量的数组,我想检查,从数组中的最后一个向量开始,并转到第一个向量的方向,如果其中一个元素具有特定值,则让我们说if(vect [i]. fieldA == 0.0).在这种情况下,如果(vect [i-1] .fieldA == 0.0)具有相同的值,我想从数组中删除整个向量.有人能为我提供一部分可视化的代码,如何创建正确的"反向迭代"循环并使用函数删除它?我尝试使用erase(),remove(),deque()但是我失败了.

我不想在这里弄乱我的代码.

感谢帮助!

编辑.所以我首先使用向量值在循环中输入数组,然后我想从末尾删除所有向量,包含元素特定值,例如fieldA == 0.0

我想切割数组,不仅删除向量的内容!在classB和classA之间有适当的继承,所以喂养效果很好,我只想通过删除向量来解决这个问题.示例:2个元素的向量数组.输入:0,1 0,3 3,3 2,3 0,6 5,6 0,8 0,7 0,6输出:0,1 0,3 3,3 2,3 0,6 5,6 0 8.结论:移除了0,7和0,6个载体.

    classA tmp;
    for (std::vector<std::classB>::iterator iter = newW.begin(); iter != newW.end(); iter++)
        {
        tmp.set_fieldA(iter->a);
        tmp.set_fieldB(iter->b);
        tmp.set_fieldC(iter->c);
        objA.push_back(tmp);
        }

    vector<std::classA> objA;
        for(int i = objA.size()-1; i > 0; i--)
        {
        if (objA[i].fieldA == 0.0)
            if (objA[i-1].fieldA == 0.0)
                objA.erase(objA[i-1]); //remove last vector from array
        }
Run Code Online (Sandbox Code Playgroud)

c++ iteration algorithm vector erase-remove-idiom

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