我正在做一个具有以下属性的用户类的程序:
private:
char* username;
char* firstname;
char* lastname;
...
在main.cpp中我有一个User用户的向量:
#include <vector>
#include "User.h"
using std::vector;
void main (int argc, char* argv[])
{
vector<User*> users;
/*
... Some Code ...
*/
}
我在/* ... Some Code ... */
位置添加了一些用户。
但是现在我想从一个程序中做什么:
users[i]
中的用户名=新用户中的用户名)
return false; // Confirm not added
return true; // Confirm added
另一方面,我想通过用户名搜索用户并从矢量中删除它:
users[i]
中的用户名=要删除的用户名)
return true; // confirm deleted
return false; // confirm not deleted
我希望你明白我的意思。
答案 0 :(得分:1)
使用lambda
User newUser( name );
if ( std::find_if( user.begin(), users.end(), []( const User& u )->bool { strcmp( u.username, newUser.username ) == 0; } ) == users.end() )
{
user.push_back( newUser );
}
(这是我的头顶,所以我可能犯了一个错误......)
答案 1 :(得分:0)
不要将指针用作stl容器的有效负载。 这不是推荐的方式。 而是使用可复制的类型。 所以你会有这样的东西 - vector&lt; User&gt;用户;
我认为您应该使用 list 而不是 vector ,因为除了移动之外,从中间删除 vector 效率不高语义已启用。