我正在嘗試製作一個非常虛擬的程序,其中我在準備和搜索中插入了值。我對C++很陌生,我只是想學習一些語言的概念。當我嘗試vector = *v
時,出現錯誤:試圖讀取或寫入受保護的內存。這通常表明其他內存已損壞。 我使用vC++在C++/cli實驗中使用。使用CLI傳輸指針的值時出錯使用CLI
我在做什麼錯?
#include "stdafx.h"
#include <algorithm>
#include <vector>
#include <ostream>
#include <iostream>
#pragma once
class BinarySearch
{
public:
BinarySearch(void)
{
}
virtual ~BinarySearch(void)
{
}
int search(int key)
{
std::vector<int>::iterator low,up;
low=std::lower_bound (vector.begin(), vector.end(), key);
return low - vector.begin();
}
std::vector<int> vector;
void prepare(void)
{
std::vector<int>* v =
new std::vector<int>();
int max = std::pow(33, 3);
for(int i=0; i < max; i++) {
v->push_back(i);
}
vector = *v;
}
};
準備方法在搜索之前使用。
的包裝,它調用的代碼在C++:
namespace Native {
public ref class Wrapper
{
public:
Wrapper(void)
{
}
BinarySearch* b;
void Prepare(void)
{
b->prepare();
}
int Search(int i)
{
return b->search(i);
}
};
}
來電在C#:
class Program
{
static void Main(string[] args)
{
var w = new Wrapper();
w.Prepare();
var position = w.Search(12);
Console.WriteLine("Array.BinarySearch p: {0}", position);
Console.ReadLine();
}
}
我對C++有些沉悶,並沒有完全理解它應該如何完成。因此,歡迎任何建議 –
在'Wrapper'構造函數中創建一個'BinarySearch'類的實例是一個好主意。 –
爲什麼你使用C++/CLI?這種語言需要熟悉本地C++和.NET。我建議你在開始時使用純C++。 –