我有一個目標2D矢量如何分配對象爲2D矢量敵不過運營商=
std::vector<std::vector<perceptron>> p;
現在,我想分配對象perceptron
這樣
PrintRectangle::PrintRectangle(QWidget *parent) : QWidget(parent),
p(5, std::vector<perceptron>(5))
{
tech = new teacher(clicked);
for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
p[i][j] = new perceptron();
p[i][j].randweight();
}
}
double learnConst = 0.1;
//tech->learnPerceptrons(p);
}
但我得到一個錯誤
E:\Sieci Neuronowe\Perceptron\printrectangle.cpp:16: error: no match for 'operator=' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<perceptron> >::value_type {aka perceptron}' and 'perceptron*')
p[i][j] = new perceptron();
^
我該如何修復?
編輯:
我仿照從C#代碼這是
Perceptron[] p;
p = new Perceptron[10];
for (int i = 0; i < 10;i++)
{
p[i] = new Perceptron();
p[i].randweight();
}
在C#中此代碼工作正常。 它是如何適應C++
好,對答案,謝謝,我有一個問題。你能看看我更新的問題嗎? – lukassz
@Lukassz - 如果你℃之間++和C#想更匹配的代碼,你需要的(智能)指針矢量存儲'perceptron'對象。 C#在內部執行此操作,並且不要求您使用C++指針語法。我用一個例子更新了我的答案。 –
@lukassz C++!= C#。使用C#作爲框架/思想來源,但不要試圖重複它如何管理內存。C#基於無限的內存模擬器,垃圾收集器,而C++基於對內存和資源的嚴格和個人控制。採取卡爾的建議,並選擇一個。只有在必要時才動態分配。 – user4581301