golang의 gc가 충분히 효과적이지 않기 때문에 많은 수의 객체를 메모리에 malloc하고 싶습니다. (약 1 억 개의 객체) malloc 메모리에 c/C++를 사용하고 std :: vector를 사용하여 객체를 보유해야합니다. .std :: vector 또는 golang의 cgo에서 다른 컨테이너를 사용하는 방법?
package main
import (
"fmt"
)
/*
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
using namespace std;
void dosome(){
vector<int> ivec; // empty vector
for (vector<int>::size_type ix = 0; ix != 10; ++ix)
ivec[ix] = ix; // disaster: ivec has no elements
}
*/
// #cgo LDFLAGS: -lstdc++
import "C"
//import "fmt"
func main() {
C.dosome()
var input string
fmt.Scanln(&input)
}
을 아래 오류 메시지가 :
go run stddemo.go
# command-line-arguments
./stddemo.go:13:10: fatal error: 'vector' file not found
#include <vector>
^
1 error generated.
어떻게 내가이 경로를 포함하거나 다른 아이디어가 설정할 수 있습니다 이 난 CGO에서 표준 컨테이너를 사용하려면, 내 코드?
작동합니다! 감사 !! –
하지만 자아가 매우 느린 것 같습니다 ?? http://stackoverflow.com/questions/28272285/why-is-cgos-performance-is-so-slow-is-there-something-wrong-with-my-testing-co –