【问题标题】:How to push_back in objective-c std::deque @property?如何在objective-c std :: deque @property中推回?
【发布时间】:2021-03-27 23:55:30
【问题描述】:

我试图 push_back number 到 @property std::deque,但是数据没有添加到 deque 并且它是空的

代码:

.h 文件

@interface HandTrackingViewController : CommonViewController

@property (readwrite, nonatomic) std::deque<double> vect;
@end

.mm 文件

#import "HandTrackingViewController.h"

@implementation HandTrackingViewController

- (void)mediapipeGraph:(MPPGraph*)graph
     didOutputPacket:(const ::mediapipe::Packet&)packet
          fromStream:(const std::string&)streamName {
    ...
    ...
    ...
    for (int handIndex = 0; handIndex < multiHandLandmarks.size(); ++handIndex) {
      ...
      for (int i = 0; i < landmarks.landmark_size(); ++i) {  
          self.vect.insert(self.vect.end(), {landmarks.landmark(i).x(), landmarks.landmark(i).y(), landmarks.landmark(i).z()});
      }
        for(int i=0; i < self.vect.size()-2; i+=3) {
            NSLog(@"(%f, %f, %f)", self.vect[i], self.vect[i+1], self.vect[i+2]); // deque is empty
        }        
    }
  }
}
@end

但如果你创建一个中间双端队列并将其分配给 self.vect,那么它就可以工作

【问题讨论】:

标签: objective-c deque


【解决方案1】:

self.vect.insert(self.vect.end(), {landmarks.landmark(i).x(), landmarks.landmark(i).y(), landmarks.landmark(i).z()}); 替换为_vect.insert(_vect.end(), {landmarks.landmark(i).x(), landmarks.landmark(i).y(), landmarks.landmark(i).z()});。不要在不需要的地方使用self.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多