私は準備に値を挿入し、検索で検索する非常にダミーのプログラムを作成しようとしています。私は 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();
}
}