我有一个班级Argmax
,其成员 std::vector< std::pair<int,float> >
Classifier::Classify(const std::vector<cv::Mat> &input_channels) {
std::vector< std::vector<float> > output = Predict(input_channels);
std::vector< std::pair<int,float> > predictions;
for ( int i = 0 ; i < output.size(); i++ ) {
std::vector<int> maxN = Argmax(output[i], 1);
int idx = maxN[0];
predictions.push_back(std::make_pair(labels_[idx], output[idx]));
}
return predictions;
}
的类型为foo
:
bar
在该课程中,我想将std::shared_ptr<int>
分配给class foo
{
std::shared_ptr<int> bar;
/*other stuff here*/
};
。但我不能写new int
因为指针没有公共赋值运算符。
应该如何我这样做?我可以bar
或bar = new int();
,但这些似乎都没有。
答案 0 :(得分:14)
bar = std::make_shared<int>();
是一种方式,特别是如果你想保留赋值运算符的易处理性。
答案 1 :(得分:11)
您可以使用reset
:
bar.reset(new int());
这将delete
当前内容(如果有)并将内部指针设置为new
表达式返回的内容。