我正在开发一个C++应用程序,在该应用程序中,我使用MPI绑定通过网络发送和接收数据。我明白派人
const int VECTOR_SIZE = 1e6;
std::vector<int> vector(VECTOR_SIZE, 0.0);
通过
// Version A
MPI_Send(const_cast<int *>(vector.data()), vector.size(), MPI_INT, 1, 0, MPI_COMM_WORLD);
比
// Version B
for (const auto &element : vector)
MPI
以类型安全的方式将对象的列表/向量/数组从c++/cli返回到c#最简单的方法是什么?
//C++/CLI project 1
public ref class MyClass
{
}
public ref class Factory
{
array<MyClass^> getObjects() {...}
}
//C# project 2
Factory f = new Factory();
System.Array a = f.getObjects(); // not typesafe! I'd like to get an array/list/vecto
在使用g++ -std=c++0x进行编译时,我遇到了一些将T类型的元素推回到向量的编译问题。
这是一个最小的示例:
#include <vector>
using namespace std;
class A {
public:
A() { }
A& operator=(A &orig) {
return *this;
}
};
int main(int argc, char **argv) {
A a;
vector<A> b;
A c = a; // This is fine
我用C++开发了一个实用程序,它有一些类和返回向量数组。我需要在PHP语言中通过调用C++函数来操作C++矢量数组。
C++代码:
class SampleCode
{
vector <string> vecarray;
public:
void setdata()
{
for (int i = 0; i < 100; i++)
{
vecarray.push_Back("This is line number "+ (i+1));
}
}
vector <string>
我在我的代码和库中到处都可以看到这种模式,但似乎在任何地方都找不到它的名称或抽象。
示例(伪代码)
T foo( T x, void f(T&) )
{
T y = x;
f( y );
return y;
}
基本上:获取一个值,以及一个转换该值的函数。制作一个值的副本,转换它,然后返回它。
真实示例(C++)
T operator+(const T& x, const T& y)
{
T z = x; // Make a copy
operator+=(z, y); // Modify in place
return
在C++中,我总是学会像这样使用address-of和so dereference操作符:
char s = 's';
char *t = &s;
t = 't'; // would be a compile error, because t must first be dereferenced
*t = 't'; // this works
那么为什么这是可行的呢?
map<string, vector<char>> letters = {
{"first", {'a',
密码
using namespace std;
class A
{
private:
vector<int> a;
public:
A(vector<int> x):a(x){}
string toString()
{
string s;
for (auto& element : a)
{
s += to_string(element) + " ";
}
return s;
}
};
int main()
{
A a1({1,2,3}
以下代码使用Visual Studio 2013编译正常。
#include <vector>
#include <string>
int main()
{
const std::string constString("fred");
const std::vector<const std::string> myVector{ constString };
}
如果我尝试使用Visual Studio 2015编译它,则会报告以下错误:
1>xmemory0(587): error C2338: The C++ Sta
在C++中,为什么vector中的以下元素访问是无效的?
void foo(std::vector<int>* vecPtr) {
int n = vecPtr->size(); // ok
int a = vecPtr->[0]; // invalid
}
相反,我们必须编写更繁琐的
(*vecPtr)[0] = 1;
我认为,operator[]调用应该具有与方法调用相同的语法,我讨厌多余的星号和圆括号。(我知道C++有很多更严重的问题,但每次我必须输入它时,这个问题都会让我很恼火……)
我正在用C++编写,试图在Ubuntu下编译,并且我遇到了使用函数指针作为键的映射的一些问题。当我定义映射时,我没有编译错误,但是一旦我尝试插入一个元素,我就会得到一个相当冗长的
In file included from /usr/include/c++/4.6/string:50:0,
from /usr/include/c++/4.6/bits/locale_classes.h:42,
from /usr/include/c++/4.6/bits/ios_base.h:43,
from
今天,我在我的C++代码中犯了一个有趣的错误。我有一个函数,它有两个类型为std::vector<int>::iterator& (i和j)的参数。迭代器应该指向相同的向量。函数应返回向量中两个数字的和,并将两个迭代器向前移动到向量的j+1th位置:
int exp_func_add::evaluate(vector<int>::iterator& i, vector<int>::iterator& j) {
int result = *i + *j;
++j;
i = j;
return result