我正在尝试制作一个非常虚拟的程序,在其中插入值准备并在搜索中搜索。我对 C++ 很陌生,我只是想学习一些语言的概念。当我尝试 时vector = *v
,我收到一个错误:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。
我正在使用 vc++ 在 c++/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;
}
};
在搜索之前使用 prepare 方法。
包装器,它调用 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();
}
}